Cómo migrar sin problemas una gran base de código a Vue 3

Rate this content
Bookmark

Migrar a Vue 3 puede ser una tarea importante (dependiendo del tamaño de tu proyecto). En Crisp, recientemente migramos nuestra aplicación (250K líneas de código) de Vue 2.6 a Vue 3.2 en aproximadamente 2 semanas.

En esta charla, compartiremos nuestros aprendizajes para que puedas beneficiarte de nuestra experiencia.

FAQ

CRISP es una aplicación de mensajería desarrollada para permitir a las empresas unificar todas sus relaciones con los clientes utilizando una sola aplicación. Combina mensajes de chat en vivo, correos electrónicos, mensajes directos en plataformas como Twitter y WhatsApp, y permite responder a incidencias en GitHub directamente desde la aplicación.

Aproximadamente 300,000 empresas utilizan CRISP, alcanzando a cerca de 200 millones de personas que utilizan la aplicación cada mes.

Vue 3 ofrece mejoras significativas en rendimiento gracias a su nuevo sistema de reactividad, es más modular con la API de composición y presenta cambios en la API como el nuevo sistema v-model que permite tener dos v-models para el mismo componente.

Dejar de admitir IE11 en Vue 3 podría ser un problema para usuarios que aún utilizan este navegador. Sin embargo, en el caso de CRISP, solo el 0.1% de las empresas utilizaban IE11, por lo que no representó un gran inconveniente.

CRISP utilizó una estrategia de migración que implicó mantener la aplicación existente de Vue 2 mientras trasladaban el código a Vue 3. Crearon una rama dedicada para Vue 3 y pudieron fusionar proyectos sin conflictos, manteniendo el uso de las mismas herramientas como Vue CLI y evitando inicialmente la nueva API de composición para minimizar riesgos.

Es recomendable actualizar primero el archivo packages.json para incluir Vue 3 y el paquete vue-compat. Luego, se debe actualizar vue-loader y las configuraciones de webpack para habilitar Vue 3. También es crucial actualizar las bibliotecas de la comunidad como vuex y vue router a sus nuevas versiones compatibles.

En Vue 3, los filtros han sido duplicados, por lo que es necesario trasladar los filtros a métodos nativos de JavaScript y luego integrar esos métodos globalmente para su uso en los componentes.

Baptiste Jamin
Baptiste Jamin
20 min
21 Oct, 2021

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Hola, soy Baptiste de CRISP, y en esta conferencia te mostraré cómo migrar un proyecto grande de Vue 2 a Vue 3. La migración a Vue 3 es un proceso sencillo con muchas mejoras, como un mejor rendimiento y modularidad. La estrategia de migración implica mantener la aplicación existente de Vue 2 mientras te mueves gradualmente a Vue 3. Actualizar las bibliotecas principales y reemplazar las API de Vue 2 con las API de Vue 3 son pasos necesarios. El impacto del nuevo sistema de reactividad de Vue 3 ha optimizado la base de código en CRISP, y la empresa está contratando desarrolladores full-stack y apoyando a la Fundación Vue.js.

1. Introducción a la migración de Vue 3 y sus beneficios

Short description:

Hola, soy Baptiste de CRISP, y en esta conferencia te mostraré cómo migrar un proyecto grande de View 2 a View 3. Recientemente, en CRISP hemos estado moviendo nuestra aplicación de mensajería de View 2.6 a View 3.2, y hasta ahora puedo decirte que el proceso de migración ha sido muy fluido. Moverse de Vue 2 a Vue 3 es una situación diferente a moverse de Angular 1 a Angular 2. Vue 3 es una migración simple. Viene con muchas mejoras, como un mejor rendimiento, modularidad y cambios en la API. Sin embargo, hay algunas compensaciones, como la eliminación del soporte para IE11 y APIs duplicadas.

Hola, soy Baptiste de CRISP, y en esta conferencia te mostraré cómo migrar un proyecto grande de View 2 a View 3. Recientemente, en CRISP hemos estado moviendo nuestra aplicación de mensajería de View 2.6 a View 3.2, y hasta ahora puedo decirte que el proceso de migración ha sido muy fluido. Sin embargo, hay muchos errores que se pueden evitar al migrar a View 3, y eso es exactamente de lo que vamos a hablar en esta conferencia.

Así que soy el CEO de CRISP, y en CRISP estamos desarrollando una aplicación de mensajería que permite a las empresas unificar todas sus relaciones con los clientes utilizando una sola aplicación. Básicamente, es un buzón compartido que permite a las empresas unificar los mensajes desde el chat en vivo en el sitio web, hasta los correos electrónicos, los mensajes directos en Twitter o en WhatsApp, e incluso puedes responder a tus problemas en GitHub directamente desde CRISP. Y todo eso se hace utilizando Vue.js. Tenemos alrededor de 300,000 empresas que utilizan CRISP y al final son alrededor de 200 millones de personas que utilizan CRISP cada mes. Ha sido un gran desafío para nosotros pasar de Vue 2 a Vue 3 porque queríamos evitar cualquier impacto para nuestros clientes.

Moverse de Vue 2 a Vue 3 es una situación diferente a moverse de Angular 1 a Angular 2. De hecho, muchos desarrolladores, cuando se lanzó Angular 2, optaron por utilizar otro framework como Vue.js en su lugar porque el costo de migración era demasiado alto. La curva de aprendizaje para Angular 2 era demasiado alta. Por esta razón, si observas las tendencias de Google, Vue.js se volvió cada vez más popular e incluso reemplazó a Angular.js. Por lo tanto, pasar a Vue 3 no es este tipo de situación porque Vue 3 es una migración simple. Una razón para esto es el paquete Vue.compat. El paquete Vue.compat te permite utilizar código de Vue 2 junto con el código base de Vue 3. Además, Vue 3 te permite utilizar las mismas herramientas. Puedes utilizar el mismo Vue CLI con el mismo Webpack. Además, Vue 3 tiene una documentación similar. Y finalmente, no necesitas volver a aprender todo porque Vue 3 es muy similar a Vue 2. Pero Vue 3 viene con muchas mejoras diferentes. Y la primera es el rendimiento. Vue 3 viene con muchas mejoras en términos de rendimiento gracias al nuevo sistema de reactividad. Además, Vue 3 es más modular gracias a la API de composición. También hay muchos cambios buenos en la API y uno de ellos es el nuevo sistema v-model que te permite tener dos v-models para el mismo componente. Pero obviamente, Vue 3 tiene algunas compensaciones. La principal es dejar de admitir IE11. Pero siendo honestos, hoy en día no es un gran problema. Por ejemplo, para una aplicación como Crisp, teníamos alrededor del 0.1% de empresas que utilizaban IE11. Así que no es un gran problema dejar de admitir IE11. Además, algunas APIs se han duplicado, como la API global de Vue.

2. Estrategia y pasos de migración a Vue 3

Short description:

En Vue 3, ya no es necesario usar vue.set o vue.delete, gracias al nuevo sistema de reactividad. Los filtros se han duplicado, lo cual fue un desafío para nosotros, ya que estábamos acostumbrados a usarlos en nuestra aplicación Angular. Nuestra estrategia de migración implicó mantener la aplicación existente de Vue 2 mientras nos movíamos gradualmente a Vue 3, reduciendo el impacto en los clientes. Creamos una rama dedicada para Vue 3 y fusionamos los proyectos sin conflictos. Mantuvimos las mismas herramientas y evitamos implementar la nueva API de composición para minimizar errores. Los siguientes pasos implican actualizar el archivo packages.json, la configuración de Vue y el archivo main.js.

Ya no podrás usar vue.set o vue.delete. Pero en realidad no es un gran problema. Porque al usar Vue 3 ya no necesitas hacer eso gracias al nuevo sistema de reactividad. Además, los filtros se han duplicado y para nosotros fue importante porque veníamos del mundo de Angular. Antes, Crisp era una aplicación Angular y usábamos filtros en gran medida.

Así que ha sido un desafío para nosotros migrar todos nuestros filtros a una nueva sintaxis compatible con Vue 3. Ahora hablemos de la estrategia de migración. Queríamos mantener nuestra aplicación existente de Vue 2 mientras movíamos el código a Vue 3 y también queríamos reducir el impacto en los clientes. Una vez que lanzamos la versión de Vue 3, no notaron ningún cambio y como somos un equipo pequeño en Crisp, solo 4 desarrolladores, queríamos reducir el tiempo de migración.

Entonces, la estrategia fue crear una rama dedicada para Vue 3. Utilizamos nuestra rama principal existente para implementar funciones y correcciones en la aplicación de producción existente. Al final, pudimos trasladar todas las correcciones de la rama principal a la versión de Vue 2 a la versión de Vue 3 porque Vue 2 y Vue 3 son muy similares. Así que pudimos fusionar los dos proyectos sin conflictos. También queríamos utilizar las mismas herramientas, por lo que mantuvimos Vue CLI y no utilizamos Vite. Además, no implementamos la nueva API de composición porque queríamos evitar el riesgo de crear nuevos errores y regresiones. No hay API de composición. Solo queríamos migrar lo necesario. Es probable que utilicemos la API de composición más adelante, pero no ahora.

Han pasado 5 minutos hablando y ahora vamos a codificar. Esta es la aplicación existente de Crisp utilizando V2. El primer paso sería actualizar tu archivo packages.json para poder actualizar Vue a Vue 3. Así que vamos a tener que actualizar Vue 2 a Vue 3 y también incluir el paquete vue-compat. Finalmente, vamos a tener que actualizar vue-loader a la versión 16 de Vue. También vamos a tener que actualizar los servicios de Vue CLI, y esto es muy importante, para poder realizar el siguiente paso. El siguiente paso sería actualizar la configuración de Vue. Vamos a tener que actualizar webpack para vue-loader para poder habilitar Vue 3 y utilizar el modo compacto de Vue 2. Así que vamos a resolver el paquete vue-compat en lugar de vue, y esto es muy importante hacerlo. El siguiente paso sería abrir tu archivo main.js y vamos a reestructurar este archivo de la siguiente manera. Primero, tendrás que importar Vue de una nueva manera. Tendrás que importar createApp y configureCompat.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Un Año en Vue 3
Vue.js London Live 2021Vue.js London Live 2021
20 min
Un Año en Vue 3
Top Content
Vue 3 puede sonar aún nuevo para muchos usuarios, pero en realidad ya ha sido lanzado hace más de un año. ¿Cómo evolucionó Vue 3 durante este período? ¿Por qué tardó tanto en ponerse al día el ecosistema? ¿Qué aprendimos de este proceso? ¿Qué viene después? ¡Discutiremos estas preguntas en esta charla!
Vue: Actualizaciones de Características
Vue.js London 2023Vue.js London 2023
44 min
Vue: Actualizaciones de Características
Top Content
El creador de Vue js da una actualización sobre las nuevas características de la tecnología.
Deja de Escribir tus Rutas
Vue.js London 2023Vue.js London 2023
30 min
Deja de Escribir tus Rutas
Cuanto más trabajas en una aplicación, más complicado se vuelve su enrutamiento y más fácil es cometer un error. "¿Se llamaba la ruta usuarios o usuario?", "¿Tenía un parámetro id o era userId?". Si solo TypeScript pudiera decirte cuáles son los nombres y parámetros posibles. Si solo no tuvieras que escribir una sola ruta más y dejar que un complemento lo haga por ti. En esta charla repasaremos lo que se necesitó para traer rutas automáticamente tipadas para Vue Router.
Nuxt en el Edge
Vue.js London 2023Vue.js London 2023
30 min
Nuxt en el Edge
Aprende cómo construir una aplicación Vue implementada en el edge para brindar una experiencia ultrarrápida a tus usuarios finales.
TresJS, una forma declarativa de crear escenas 3D a partir de componentes Vue
Vue.js London 2023Vue.js London 2023
27 min
TresJS, una forma declarativa de crear escenas 3D a partir de componentes Vue
Conoce TresJS ▲ ■ ●, una forma declarativa de llevar la magia de ThreeJS utilizando componentes y composables de Vue en la vida cotidiana. Piénsalo como React-three-fiber o Lunchbox pero sin necesidad de un renderizador personalizado. Simplemente funciona.¿Estás listo para agregar una nueva dimensión a tus aplicaciones Vue?
10 Años de Vue: el Pasado y el Futuro
Vue.js Live 2024Vue.js Live 2024
29 min
10 Años de Vue: el Pasado y el Futuro
Vue fue anunciado públicamente por primera vez en 2014 y cumple 10 años este año! En esta charla, echaremos un vistazo juntos a cómo ha cambiado y evolucionado desde sus humildes comienzos, discutiremos algunos de los desafíos y aprendizajes, y cómo pensamos en su futuro.

Workshops on related topic

Vue3: Desarrollo Moderno de Aplicaciones Frontend
Vue.js London Live 2021Vue.js London Live 2021
169 min
Vue3: Desarrollo Moderno de Aplicaciones Frontend
Top Content
Featured WorkshopFree
Mikhail Kuznetcov
Mikhail Kuznetcov
Vue3 fue lanzado a mediados de 2020. Además de muchas mejoras y optimizaciones, la principal característica que trae Vue3 es la API de Composición, una nueva forma de escribir y reutilizar código reactivo. Aprendamos más sobre cómo usar la API de Composición de manera eficiente.

Además de las características principales de Vue3, explicaremos ejemplos de cómo usar bibliotecas populares con Vue3.

Tabla de contenidos:
- Introducción a Vue3
- API de Composición
- Bibliotecas principales
- Ecosistema Vue3

Requisitos previos:
IDE de elección (Inellij o VSC) instalado
Nodejs + NPM
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
JSNation 2022JSNation 2022
141 min
Embarcándonos en una aventura con Nuxt 3, Motion UI y Azure
WorkshopFree
Melanie de Leeuw
Melanie de Leeuw
¡Nos encantan las aplicaciones web fáciles de crear y desplegar! Entonces, veamos qué puede hacer una pila tecnológica muy actual como Nuxt 3, Motion UI y Azure Static Web Apps. Podría ser perfectamente un trío de oro en el desarrollo web moderno. O podría ser una hoguera de errores y problemas. De cualquier manera, será una aventura de aprendizaje para todos nosotros. Nuxt 3 se lanzó hace apenas unos meses y no podemos esperar más para explorar sus nuevas características, como su compatibilidad con Vue 3 y el Motor Nitro. Agregamos un poco de estilo a nuestra aplicación con la biblioteca Sass Motion UI, porque el diseño estático está pasado de moda y las animaciones vuelven a estar de moda.Nuestra fuerza impulsora de la pila será Azure. Las aplicaciones web estáticas de Azure son nuevas, casi listas para producción y una forma ingeniosa y rápida para que los desarrolladores desplieguen sus sitios web. Así que, por supuesto, debemos probar esto.Con algunas Azure Functions esparcidas por encima, exploraremos lo que puede hacer el desarrollo web en 2022.
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
Vue.js London Live 2021Vue.js London Live 2021
115 min
Construyendo aplicaciones GraphQL de pila completa con Hasura y Vue 3
WorkshopFree
Gavin Ray
Gavin Ray
El ecosistema frontend avanza a un ritmo frenético. Este masterclass tiene como objetivo equipar a los participantes con una comprensión del estado del ecosistema Vue 3 + GraphQL, explorando ese ecosistema - prácticamente y a través del desarrollo de aplicaciones de pila completa.

Tabla de contenidos
- Los participantes utilizarán Hasura para construir una API GraphQL en tiempo real respaldada por Postgres. Juntos recorreremos su consumo desde un frontend y haremos que el frontend sea reactivo, suscrito a los cambios de datos.
- Además, analizaremos las herramientas comúnmente utilizadas en el stack Vue GraphQL (como Apollo Client y Urql), discutiremos algunas alternativas menos conocidas y abordaremos los problemas frecuentemente encontrados al comenzar.
- Se describirán varios patrones para gestionar datos con estado y sus compensaciones durante el masterclass, y se mostrará una implementación básica para cada patrón discutido.
Nivel del masterclass

NOTA: No se requiere experiencia previa con GraphQL, pero puede ser útil para ayudar a la comprensión. Se cubrirán los fundamentos.