美文网首页Angularhybrid APP(ionic)Ionic3项目实战教程
ionic3项目实战教程 - 第2讲 ionic3懒加载配置

ionic3项目实战教程 - 第2讲 ionic3懒加载配置

作者: IonicBlog | 来源:发表于2017-08-19 17:52 被阅读3514次

    配置懒加载需要以下几个步骤:

    • 1.给需要懒加载的页面配置module.ts;
    • 2.在对应页面的.ts文件里增加@IonicPage()特性;
    • 3.在app.module.ts移除页面引用;
    • 4.使用懒加载;
    • 5.懒加载运行效果图;

    1.配置module.ts

    依次配置about.module.ts、contact.module.ts、home.module.ts、tabs.module.ts

    about.module.ts

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

    contact.module.ts

    import { NgModule } from '@angular/core';
    import { IonicPageModule } from 'ionic-angular';
    import { ContactPage } from './contact';
    
    @NgModule({
        declarations: [
            ContactPage,
        ],
        imports: [
            IonicPageModule.forChild(ContactPage),
        ],
    })
    export class ContactPageModule { }
    

    home.module.ts

    import { NgModule } from '@angular/core';
    import { IonicPageModule } from 'ionic-angular';
    import { HomePage } from './home';
    
    @NgModule({
        declarations: [
            HomePage,
        ],
        imports: [
            IonicPageModule.forChild(HomePage),
        ],
    })
    export class HomePageModule { }
    
    

    tabs.module.ts

    import { NgModule } from '@angular/core';
    import { IonicPageModule } from 'ionic-angular';
    import { TabsPage } from './tabs';
    
    @NgModule({
        declarations: [
            TabsPage,
        ],
        imports: [
            IonicPageModule.forChild(TabsPage),
        ],
    })
    export class TabsPageModule { }
    

    配置完成后目录如下

    2-1.png

    2.增加@IonicPage()特性

    以about.ts为例,在@Component上方�加上@IonicPage特性(行号4),其他需要懒加载的页面也需要配置。

    2-2.png

    3.在app.module.ts移除页面引用;

    将�配置过懒加载的页面,在app.module.ts中进行移除引用,移除后的代码如下:

    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
      ],
      imports: [
        BrowserModule,
        IonicModule.forRoot(MyApp)
      ],
      bootstrap: [IonicApp],
      entryComponents: [
        MyApp
      ],
      providers: [
        StatusBar,
        SplashScreen,
        { provide: ErrorHandler, useClass: IonicErrorHandler }
      ]
    })
    export class AppModule { }
    

    4.使用懒加载

    使用懒加载,只需要将之前的页面名字用引号引起来即可,对应的也不需要在顶部进行import导入

    app.component.ts

    import { Component } from '@angular/core';
    import { Platform } from 'ionic-angular';
    import { StatusBar } from '@ionic-native/status-bar';
    import { SplashScreen } from '@ionic-native/splash-screen';
    
    @Component({
      templateUrl: 'app.html'
    })
    export class MyApp {
      rootPage: any = 'TabsPage';
    
      constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen) {
        platform.ready().then(() => {
          statusBar.styleDefault();
          splashScreen.hide();
        });
      }
    }
    
    

    tabs.ts

    import { IonicPage } from 'ionic-angular';
    import { Component } from '@angular/core';
    
    @IonicPage()
    @Component({
      templateUrl: 'tabs.html'
    })
    export class TabsPage {
    
      tab1Root = 'HomePage';
      tab2Root = 'ContactPage';
      tab3Root = 'AboutPage';
    
      constructor() {
    
      }
    }
    
    

    5.懒加载运行效果图

    首次加载时,只会加载tabs和home

    2-3

    当点击“个人中心”时才会加载about

    2-4.png

    下一讲将讲解如何配置全局服务类。

    完!

    相关文章

      网友评论

      • 894592ab6cc7:invalid link: TabsPage 无效的链接是什么原因啊?
      • 谁说需要十年:顺便提下是我在homepage页面也引用了懒加载 但一直提示HomePage一直找不到,原因是在tabs下面的tab1Root = "HomePage"; 这里没有加引号
        一般都是 ="XxxPage" 和 push("XxxPage") 会用到
        不管能不能帮到其他人,记录一下
      • 谁说需要十年:题主很好,建议关注题主公众号IonicBlog,我是小白,看了文章之后,还是不甚理解,联系到了题主,题主一点点给我解答,占用题主时间,心里还是蛮愧疚的,只能这里明志,bang题主多宣传!
      • e0596aadcb0f:我改写了后一直报找不到 tabs.module
        IonicBlog:@truman12 尝试把note_modules删掉,使用npm install
        truman12:我也遇到这个问题,分析了很久,没有发现代码问题。后来想到可能是修改没有生效,执行ionict serve重启下ionic就可以了。
        日暮冰秋:我的也是 不知道怎么解决?
      • 漂在海上的风筝:我现在新建了5个页面,除了首页全都是懒加载的,按照顺序跳转后再依次back返回,但是返回到中间某个页面时就返回不了了,页面栈不对了,这是啥情况
        IonicBlog:@漂在海上的风筝 Nav并没有限制导航堆栈的数量,请检查代码逻辑是否有误
        漂在海上的风筝:比如首页------->A---->B---->C------>D,然后按back依次返回到B页面的时候B页面就变成首页了,返回键也消失了,其中A、B、C、D四个页面都是懒加载的
      • 1060bbb5813e:你好,跟着你步骤做 懒加载报错-- cannod find module 附上我在sf的问题链接
        8128ab9a6706:@IonicBlog 请问一下怎么才能FQ出去使用npm啊,国内环境使用这个命令完全没反应啊。
        IonicBlog:@日久不生情 懒加载配置正确的情况下,出现cannot find module ;这个情况有可能是你项目的node_modules包是通过cnpm国内镜像安装的,尝试删除node_modules,使用npm install,这个过程比较慢,请耐心等待,安装成功之后重新ionic serve试试看。
        1060bbb5813e:https://segmentfault.com/q/1010000010757846

      本文标题:ionic3项目实战教程 - 第2讲 ionic3懒加载配置

      本文链接:https://www.haomeiwen.com/subject/rewtdxtx.html