第二节:ionic3探索之路-懒加载

Ionic3懒加载实现

为什么使用懒加载?
在实际开发中,越复杂的功能就会占用越多资源,写越多的代码,那么打开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
该项目是下一节的内容,但是我也是使用了懒加载了的。呵呵

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容

  • 1. 更新到ionic3 .1 把node_modules/文件夹中的所有依赖删掉.2 修改package.jso...
    cpu_driver阅读 14,008评论 20 24
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,507评论 25 707
  • 初学前端跨平台,水平尚浅,如有错误多多指教。 由于ionic包含在angular外层(或者可以理解...
    fality阅读 2,396评论 0 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,599评论 18 139
  • 我喜欢这夜 在它身上用尽最华彩的词穷 渲成一道道耀眼不刺目的诗行 毕竟,它没那么喧哗 静静地待在我的房间 用最轻柔...
    楚囚998阅读 154评论 2 3