Reduce el tiempo de carga con
Lazy Loading
by @nicobytes


¿Qué es una aplicación rápida?
- Tiempo de carga de la aplicación.
- Cambiar de una página a otra o de una ruta a otra. (Fluidez de la aplicación)
- Actualizar datos.

iONIC 2 => AOT


ion-book.com


resumen
ionic cordova build android --prod
ionic cordova build ios --prod
ionic cordova run android --prod
ionic cordova run ios --prod

resultado


ionic 3 => LAZY LOADING


PARTE 1: CONCEPTO


ionic 3 => LAZY LOADING


ionic 2 => Ionic 3


lazy loading


ionic 3 => modules




app.module.ts
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})



app.module.ts
@NgModule({
declarations: [
MyApp
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}



apps que cargan más rapido

PARTE 2: IMPLEMENTACIÓN


implentación
- Cordova 7
- Ionic 3
- Ionic CLI 3.5.0
ionic start demo112 tabs

crear modulos
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { YOURPAGE } from './YOURPAGEFILE';
@NgModule({
declarations: [
YOURPAGE,
],
imports: [
IonicPageModule.forChild(YOURPAGE),
SharedModule
],
exports: [
YOURPAGE
]
})
export class YOURPAGEModule {}

crear modulos


antes app.module.ts
@NgModule({
declarations: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
AboutPage,
ContactPage,
HomePage,
TabsPage
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}

despues app.module.ts
@NgModule({
declarations: [
MyApp
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp
],
providers: [
StatusBar,
SplashScreen,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}

consideraciones
- Navegación sin tener que hacer imports.
- Uso de Http
- https://www.ion-book.com/blog/tips/ionic-2-to-ionic3/

PARTE 3: shared module


componentes, directivas, pipes y providers

ionic cli
ionic g component item-user
ionic g directive highlight
ionic g pipe reverse
ionic g provider user

app.module.ts

shared module


shared module


shared module
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { SharedModule } from '../../shared/shared.module';
import { AboutPage } from './about';
@NgModule({
declarations: [
AboutPage,
],
imports: [
IonicPageModule.forChild(AboutPage),
SharedModule
],
exports: [
AboutPage
]
})
export class AboutModule {}

PARTE 4: resumen

consideraciones
- Usar un shared module
- Push, pop y setRoot como string
- Compilar deja varios archivos
- Mejoras el tiempo de carga de la App



gracias...
Lazy Loading en Ionic
By Nicolas Molina
Lazy Loading en Ionic
Reduce el tiempo de carga con Lazy Loading
- 2,195