第二節(jié):ionic3探索之路-懶加載

Ionic3懶加載實現

為什么使用懶加載?
在實際開發(fā)中,越復雜的功能就會占用越多資源,寫越多的代碼,那么打開App的時候就需要用更多的時間,因為是同時加載了所有的資源,切換也會使用更多的時間。那么為什么我需要什么才加載什么呢?

未使用懶加載之前:


image.png

可以在上圖明顯的看到三個選項卡布局的App把所有的資源都進行加載了,但是目前我只顯示了home這個頁面,另外兩個頁面我不需要立馬加載的呀。

好了,問題的拋到這里,下面就進行怎么使用懶加載進行簡單的說一下吧。

1.需要知道的幾個概念,我不解釋,angular學習中有。

  • 組件
  • 裝飾器
  • 模塊
  1. @IonicPage()裝飾器。

  2. 具體操作如下:
    a.為about,contact,home,tabs添加module,代碼如下

import {NgModule} from "@angular/core";
import {IonicPageModule} from "ionic-angular";
import {AboutPage} from "./about";

/**
 * Created by 雷洪飛 on 2017/9/25.
 * @function:
 */

@NgModule({
  imports: [
    IonicPageModule.forChild(AboutPage)
  ],
  declarations: [
    AboutPage
  ]
})

export class AboutModule {

}

b. 在tabs.ts中去掉對HomaPage,AboutPage,ContactPage的組件引用,更改為字符串,并且還需要在app.component.ts中,對rootPage:any = TabsPage也要設置為字符串.

import { Component } from '@angular/core';

import {IonicPage} from "ionic-angular";

@IonicPage()
@Component({
  templateUrl: 'tabs.html'
})
export class TabsPage {
  // 去掉組件引用,改為字符串
  tab1Root = 'HomePage';
  tab2Root = 'AboutPage';
  tab3Root = 'ContactPage';

  constructor() {

  }
}

c. 添加@IonicPage()特性,在組件中添加(HomePage,ContactPage,AboutPage,TabsPage).

import { Component } from '@angular/core';
import {IonicPage, NavController} from 'ionic-angular';
//  添加IonicPage特性
@IonicPage()
@Component({
  selector: 'page-contact',
  templateUrl: 'contact.html'
})
export class ContactPage {

  constructor(public navCtrl: NavController) {

  }

}

需要注意的是:不能再app.component.ts中添加該裝飾器,否則啟動報錯。

image.png

d. 在app.module中去掉HomePage,AboutPage,ContactPage的declarations申明h和entryComponents中的引用。

import { NgModule, ErrorHandler } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';


import { StatusBar } from '@ionic-native/status-bar';
import { SplashScreen } from '@ionic-native/splash-screen';

@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 {}

e. OK了,到此為止懶加載配置完成,啟動項目試試吧。

image.png

f. 我的項目結構圖如下:

最后

在使用了懶加載之后,每一個page頁面都需要一個module,并且使用到該組件的時候需要使用字符串,而不是組件類型。如上面提到的幾個選項卡配置,將組件修改為字符串類型。

git代碼地址:
https://github.com/leihfei/ionic3-plugin.git
該項目是下一節(jié)的內容,但是我也是使用了懶加載了的。呵呵

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. 更新到ionic3 .1 把node_modules/文件夾中的所有依賴刪掉.2 修改package.jso...
    cpu_driver閱讀 14,043評論 20 24
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,284評論 25 708
  • 初學前端跨平臺,水平尚淺,如有錯誤多多指教。 由于ionic包含在angular外層(或者可以理解...
    fality閱讀 2,483評論 0 4
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 我喜歡這夜 在它身上用盡最華彩的詞窮 渲成一道道耀眼不刺目的詩行 畢竟,它沒那么喧嘩 靜靜地待在我的房間 用最輕柔...
    楚囚998閱讀 162評論 2 3