Tiempo estimado para actualización: 10-20 minutos.
If you scaffolded a NativeScript-Vue app using the 1.3.1 version of the Vue-CLI template, it's time to upgrade to the newest 2.0 version. This guide will help you do that.
La nueva template tiene una diferente estructura de carpetas:
El proceso se puede resumir en:
Usa la Vue-CLI template para crear una nueva app. Asegúrate de ejecutar los mismos comandos de instalación que usaste para la antigua versión. Por ejemplo, si instalaste Vuex con el CLI la primera vez, hazlo ahora de nuevo.
Ejecuta el siguiente comando para crear un nuevo proyecto usando la Vue-CLI template.
$ npm install -g @vue/cli @vue/cli-init
$ vue init nativescript-vue/vue-cli-template <project-name>
$ cd <project-name>
$ npm install
$ tns preview
$ # or
$ tns run
App_Resources
iOS: Copia la carpeta ./template/app/App_Resources/iOS
de tu antigua app. Entonces, pégala en la carpeta app/App_Resources
de tu nueva app. Asegúrate de que estás reemplazando la nueva carpeta App_Resources/iOS
.
Android: Copia todos los contenidos de la carpeta ./template/app/App_Resources/Android
de tu antigua app. Después, pégala en la carpeta app/App_Resources/Android/src/main/res
de tu nueva app.
src
y app
Copia todas las carpetas que hay en src
de tu antigua app y pégalas en la carpeta app
de tu nueva app.
Si tienes fuentes de texto personalizadas, mueve los contenidos de la carpeta src/assets/fonts
a la carpeta app/fonts
. Esto asegura que NativeScript cargará las fuentes automáticamente.
main.js
Modifica el bloque de inicialización de Vue en el fichero main.js
para que se parezca a lo siguiente:
new Vue({
render: h => h('frame', [h(HelloWorld)]),
}).$start();
NativeScript 4.0 nos trae dos importantes mejoras:
<Frame>
Antes de NativeScript 4.0, el elemento raíz era siempre un <Frame>
que era implícitamente creado por NativeScript cuando la aplicación empezaba.
Con los últimos cambios, los elementos <Frame>
y <Page>
no son automáticamente creados. Así, en NativeScript-Vue 2.0.0 necesitas añadirlos explícitamenet en tu plantilla.
Para mantener el comportamiento previo de tener un único elemento raíz <Frame>
, tu puedes cambiar la instancia raíz Vue para tener un elemento <Frame>
y un <Page>
.
Ejemplo: Añadiendo <Frame>
y <Page>
a la plantilla
// in older versions
// this automatically created a Page
new Vue({
template: `<Label text="Hello world"/>`
}).$start()
// in NativeScript-Vue 2.0.0
// the <Frame> and <Page> must exist in your template
new Vue({
template: `
<Frame>
<Page>
<Label text="Hello world"/>
</Page>
</Frame>
`
}).$start()
Esto te permite usar un elemento compartido en las diferentes páginas.
Ejemplo: Usando un elemento compartido <SideDrawer>
new Vue({
template: `
<RadSideDrawer>
<StackLayout ~drawerContent>...</StackLayout>
<Frame ~mainContent>
<Page>
<Label text="Hello world"/>
</Page>
</Frame>
</RadSideDrawer>
`
}).$start()
Al haber cambiado la estructura de carpetas, necesitas cambiar los paths en tu nueva app que apuntan a los estilos, fuentes e imágenes.
Ejemplo: Cambiando las referencias a las imágenes
En tu antigua app, es probable que tengas referencias a imágenes como esta.
<Image v-if="surprise" src="~/images/NativeScript-Vue.png"/>
Para asegurar que NativeScript carga las imágenes, cambia el path al siguiente.
<Image v-if="surprise" src="~/assets/images/NativeScript-Vue.png"/>
Si tu app usa enrutado manual, la sintaxis para pasar props ha cambiado. Este cambio puede no ser necesario en todos los proyectos.
Es probable que tu antigua sintaxis sea como esta.
this.$navigateTo(NewPage, {
transition: {},
transitioniOS: {},
transitionAndroid: {},
context: {
propsData: {
name: this.name,
value: this.value
}
}
});
Para preservar el comportamiento de enrutado en la nueva app, cambia la sintaxis a la siguiente:
this.$navigateTo(NewPage, {
transition: {},
transitioniOS: {},
transitionAndroid: {},
props: {
name: this.name,
value: this.value
}
});
package.json
Copia los valores relevantes del fichero package.json
de tu antigua app al fichero package.json
de tu nueva app.
Probablemente necesitarás copiar el bloque de Dependencies:
y, en algunos casos, ajustar la versión y la descripción de la nueva app al comienzo del package.json
.
Ejecuta el siguiente comando para limpiar las carpetas de la nueva app y reinstalar todas las dependencias.
$ cd <project-name>
$ rm -rf platforms
$ npm install
$ tns run
NativeScript ahora ofrece soporte para HMR (Hot Module Replacement). La última versión de NativeScript-Vue ofrece soporte HMR out-of-the-box pero requiere las NativeScript CLI.
Ejecuta el siguiente comando para obtener soporte HMR instalando la última y mejor versión de NativeScript CLI.
$ npm install -g nativescript@next
$ cd <project-name>
$ rm -rf platforms
$ tns run