angular2的lazyload初體驗


angular2自帶了lazyload,就是路由的loadChild,要優化ng2項目必不可少。代碼已更新到ng-demo ->https://github.com/chenby/ng2-demo

先看一下效果(我隨便寫的ng2的demo)--這是主頁————

可以看到下面,有關4.4M,沒有圖片被加載。(刷新要強制刷新,避免瀏覽器緩存);

打開/h路由,然后強制刷新----

有圖片請求,資源成了4.9M。

打開我們的app.module.ts

寫好主模塊的路由,我這里,比如這樣:

主要就是一個loadChildren屬性,正常的路由是下面那個/a,是component屬性,在加載的時候就直接加載了這個component。loadChildren路由就是要寫明要懶加載的路徑是什么。

#前面是該模塊的地址,#后面是該模塊的導出--子模塊。文件目錄如下--

要懶加載的lazy模塊就在lazy文件夾里。在主模塊里面,我們要做的就這么多。注意,不要在主模塊里引入要懶加載的文件,否則會讓懶加載沒有意義。

然后在lazy文件夾里寫lazy.module.ts,lazy模塊,lazy.components.ts,lazy模塊的視圖組件。這個視圖組件就是被懶加載的內容。

我用的angular-cli,命令運行-

ng g module lazy

生成lazy模塊。

lazy.components.ts

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

@Component({
  selector: 'lazy',
  template:'<h1>lazy</h1> <img src="http://img.zcool.cn/community/01594358b4cf8aa801219c77ef641f.jpg">'
})
export class lazyComponent implements OnInit {

  constructor() {
      
  }
  ngOnInit() {
     
  }

}

網上隨便找了個圖片來測試模塊是否被懶加載了,這個視圖就是一個h1的標題和一個還不小的圖片。

主要在lazy.module.ts

import { NgModule } from '@angular/core';
import { lazyComponent }   from './lazy.components';
import { RouterModule, Routes } from '@angular/router';


const routes: Routes = [
    { path: '', component: lazyComponent }
];
@NgModule({
  imports: [
    RouterModule.forChild(routes)
  ],
  declarations: [lazyComponent]
})
export class LazyModule { }

我們需要做的就是1,引入視圖模塊。2,定義路由。3,定義子模塊

主要就是這個路由,定義的path:''就是/路由。后面注意定義路由要用forChild。

然后就完成了懶加載。~

另外說一句,子模塊的路由是基於主模塊的路由,如果剛剛寫的是 path:"abc",那么訪問/h/abc才有視圖展示,否則是空白。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM