::: info ¿Usted es nuevo a Vue.js? Consulte nuestra guía esencial para empezar. :::
Este guía es principalmente para usuarios con experiencia previa de Vue 2 quien quiere aprender sobre las nuevas características y cambios en Vue 3. Este no es algo que tiene que leer desde arriba hasta abajo antes de probar Vue 3. Mientras se ve como que mucho ya han cambiado, muchos de los que ya sabe y a usted le gustan sobre Vue todavía mantienen lo mismo, pero queremos ser lo más minucioso posible y proveemos explicaciones y ejemplos detalladas para cada cambio documentado.
- Inicio Rápido
- Compilación para Migración
- Nuevas Características Destacadas
- Cambios Rotundos
- Librerías de Soporte
<iframe src="https://player.vimeo.com/video/440868720" width="640" height="360" frameborder="0" allow="autoplay; fullscreen" allowfullscreen></iframe>
Empiece a aprender Vue 3 en Vue Mastery.
Si quiere probar Vue 3 en un nuevo proyecto rápidamente:
-
Mediante CDN:
<script src="https://unpkg.com/vue@next"></script>
-
playground dentro del navegador en Codepen
-
Sandbox dentro del navegador en CodeSandbox
-
Andamio (scaffold) mediante Vite:
npm init vite hello-vue3 -- --template vue # O yarn create vite hello-vue3 --template vue
-
Scaffold via vue-cli:
npm install -g @vue/cli # O yarn global add @vue/cli vue create hello-vue3 # seleccionar el preajuste vue 3
Si tiene un proyecto o librería existente de Vue 2 que intente actualizar a Vue 3, proveemos una compilación de Vue 3 que ofrezca APIs compatibles con Vue 2. Echa una vistazo a la página compilación para migración para más detalles.
Algunas de las nuevas características para ver en Vue 3 incluyen:
- API de Composición
- Teleport
- Fragmentos
- Opción de componentes emits
- API
createRenderer
de@vue/runtime-core
para crear renderizadores personalizados - Azúcar sintaxis de API de composición de SFC (
<script setup>
) - Variables CSS impulsados por estados en SFC (
v-bind
en<style>
) <style scoped>
de SFC ahora puede incluir reglas globales o reglas que solo se dirigen a contenido de slot- Suspense
El siguiente consiste una lista de cambios rotundos desde 2.x:
- API Global de Vue se ha cambiado para utilizar una instancia de aplicación
- APIs Globales y internales se han reestructurado para ser capaz para tree-shake
- El uso de
v-model
en componentes han sido rehecho, reemplazandov-bind.sync
- El uso de
key
en<template v-for>
y nodos non-v-for
ha cambiado - La precedencia de
v-if
yv-for
cuando se utilizan en el mismo elemento ha cambiado v-bind="object"
ahora es sensible al orden- El modificador
v-on:event.native
se ha eliminado - El
ref
dentro dev-for
ya no registra una matriz de refs
- Componentes funcionales solo pueden ser creados utilizando una función plana
- El atributo
functional
en<template>
de un componente de un solo archivo (SFC) y la opción de componentefunctional
son deprecados - Ahora se requiere el método
defineAsyncComponent
para crear componentes asíncronos - Los eventos de componentes ahora deben ser declarados con la opción
emits
- Se ha cambiado la API de función render
- La propiedad
$scopedSlots
se ha eliminado y todos los slots son expuestos mediante$slots
como funciones - La propiedad
$listeners
se ha eliminado / fusionado con$attrs
- La propiedad
$attrs
ahora incluye los atributosclass
ystyle
- Las verificaciones de elementos personalizados ahora son realizadas durante el proceso de compilación de plantilla
- El uso del artibuto especial
is
es limitado a la etiqueta reservada<component>
solamente
- La opción de ciclo de vida
destroyed
se ha renombrado aunmounted
- La opción de ciclo de vida
beforeDestroy
se ha renombrado abeforeUnmount
- La función de factoría de props
default
ya no tiene acceso al contextothis
- Se ha cambiado la API de directiva personalizada para alinearse con ciclo de vida de componentes y se ha eliminado
binding.expression
- La opción
data
siempre debe ser declarada como una función - La opción
data
de los mixines ahora se fusionan superficialmente (shallowly) - Se ha cambiado la estrategia de coación de atributos
- Se han renombrado unas clases de transición
<TransitionGroup>
ahora no renderiza elemento de envoltorio por defecto- Al observar una matriz, el callback solo será disparado cuando la matriz sea reemplazada. Si necesita dispararlo en mutación, debe especificar la opción
deep
. - Las etiquetas
<template>
sin ninguna directiva especial (v-if/else-if/else
,v-for
, ov-slot
) ahora son tratadas como elementos planos y resultarán en un elemento nativo<template>
en vez de renderizar el contenido interior de sí mísmo. - Una aplicación montada no reemplaza el elemento al cual está montado
- Los eventos de ciclo de vida prefijados con
hook:
ahora utilizan el prefijovnode-
keyCode
como modificadores dev-on
- métodos de instancias $on, $off and $once
- Filtros
- Atributos de plantillas en líneas
- La propiedad de instancia
$children
- La opción
propsData
- El método de instancia
$destroy
. Los usuarios ya no deberían manejar el ciclo de vida de componentes Vue individuales manualmente. - Las funciones globales
set
ydelete
, y los métodos de instancias$set
y$delete
. Ya no son requeridos con la detección de cambios basado de proxy.
Todas las liberías y herramientas oficiales nuestras ahora soportan Vue 3, pero algunos de ellas son todavía en fase beta o versión candidata. Puede encontrar detalles para las librerías individuales abajo. La mayoría ahora son distribuidas utilizando la etiqueta de distribución next
en npm. Intentamos cambiar a latest
una vez que todas las librerías oficiales sean versiones compatibles y estables.
Desde v4.5.0, vue-cli
ahora provee la opción integrada para elegir Vue 3 cuando se cree un nuevo proyecto. Hoy puede actualizar vue-cli
y ejecutar vue create
para crear un proyecto de Vue 3.
Vue Router 4.0 provee soporte para Vue 3 y tiene un número de cambios rotundos propios. Echa una vistazo a su guía de migración para más detalles.
Vuex 4.0 provee soporte para Vue 3 con la misma API como 3.x en gran medida. El sólo cambio rotundo es cómo se instala el plugin.
Estamos trabajando sobre una nueva versión de Devtools con una nueva interfaz de usuario y las internales refactorizadas para soportar múltiples versiones de Vue. Actualmente la nueva versión es en fase beta y solo soporta Vue 3 (para ahora). La integración entre Vuex y Router es también trabajo en proceso.
-
Para Chrome: Instalarlo desde Chrome web store
- Note: el canal beta podría tener conflictos con la versión estable de devtools, por lo tanto, podría necesitar temporalmente deshablitar la versión estable para que se funcione bien el canal beta.
-
Para Firefox: Descargar la extención firmada (archivo
.xpi
en Assets)
Es recomendado utilizar VSCode con nuestra extención oficial Volar, que provee soporte de IDE comprehensivo para Vue 3.
Proyecto | npm | Repo |
---|---|---|
@vue/babel-plugin-jsx | [GitHub] | |
eslint-plugin-vue | [GitHub] | |
@vue/test-utils | [GitHub] | |
vue-class-component | [GitHub] | |
vue-loader | [GitHub] | |
rollup-plugin-vue | [GitHub] |
::: info Para información adicional sobre la compatibilidad de Vue 3 con librerías y plugins, asegúrese de echar una vistazo a este problema en awesome-vue. :::