在ionic3中,官方给出了使用懒加载来提升性能的解决方案,如果你的项目过于庞大,官方也给出了脚本用于你的懒加载.
1.为页面创建模块并使用IonicPage
使用Ionic 2,我们为每个页面提供了一个文件夹,其中包含3个文件,如下图所示。
在每个文件夹中,我们需要创建一个NAME.module.ts类型的新文件,这个新模块文件应如下所示(如果我们按照图像中的命名):
import { NgModule } from '@angular/core'; |
在为每个页面创建这个新模块之后,我们还必须为每个页面文件添加一个装饰器。确保导入并将其添加到您的所有页面:import { IonicPage } from 'ionic-angular';
...
...
@IonicPage()
@Component({
这里需要注意的是,IonicPage这个装饰器,IonicPage接受一个元数据作为参数使用,默认情况下为空,元数据共有4个可配参数,分别是name,segment,defaultHistory,priority这里面和懒加载有关的为priority;该priority属性仅在预加载期间使用。默认情况下,预加载已关闭,因此设置此属性将不执行任何操作,要启用预加载,请preloadModules在主应用程序模块config中设置true:@NgModule({
declarations: [
MyApp
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp, {
preloadModules: true
})
],
bootstrap: [IonicApp],
entryComponents: [
MyApp
]
})
export class AppModule { }
如果打开预加载,它将根据值加载模块priority。下面的值是可能的priority:”high”,”low”,和”off”。如果没有priority,它将被设置为”low”。
所以这里,请根据自己项目的实际需求选择是否使用预加载
2.删除页面导入和更改用法
在所有页面中,您现在可以继续删除其他页面的import语句。
Especiall浏览app.module.ts并删除导入,从声明和entryComponents中删除页面。
例如之前:this.navCtrl.push(HomePage);
现在this.navCtrl.push('HomePage');
3.添加新模块
我们还需要将BrowserModule导入app.module.ts。如果你的应用程序正在使用HTTP调用,您还需要导入HttpModule,如下所示:import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
...
...
imports: [
BrowserModule,
HttpModule,
IonicModule.forRoot(MyApp)
],
4.Pipes(管道)的懒加载
与angular的共享模块类似的方法一样,我们可以新建一个pipes.module.ts文件内将导入所有你的pipe管道,例如
import { SortScheduleTime } from './sort-schedule-time'; |
如果现在想要在其中一个页面中使用管道,只需将新管道模块添加到该页面的导入中,如下所示import { PipesModule } from './../../pipes/pipes.module';
..
..
imports: [
IonicPageModule.forChild(EventDetailsPage),
PipesModule
],
5.components(组件)的懒加载
与自定义管道类似的方法,新建一个components.modules.ts即可