zoukankan      html  css  js  c++  java
  • angular2如何按需加载?

    angular2用webpack打包每次都只打包成单个mian文件,很大,例如页面中的关于我们,联系我们这样的页面,用户可能几乎不会打开,但是我们还是每次都要让用户加载,体验很不好,

    这样就需要按需加载,当不长访问的页面,我们就单独打包成一个页面,当客户访问时,再去加载JS文件。

    那么angular2如何进行按需加载呢?

    我们使用webpack-toolkit,可以直接在git上看教程https://github.com/AngularClass/webpack-toolkit

    angular2自己也支持异步加载,可以查看AsyncRoute的使用,github上查找会有很多使用例子 

    我写了个小demo,可以在dev分支中查看相关内容,https://github.com/lyt308012546/ng2-webpack-demo/tree/dev

    // Install
    npm install @angularclass/webpack-toolkit --save-dev
    
    
    // app/about/about.ts
    
    @Component({
      selector: 'about',
      template: '<h1>About</h1>'
    })
    export class About {}
    
    // app/app.routes.ts
    
    export const routes = [
      { path: '', component: Home },
      { path: 'about', component: 'About' }
    ];
    
    // main.browser.ts
    
    import {routes} from './app/app.routes';
    import { provideWebpack } from '@angularclass/webpack-toolkit';
    bootstrap(App, [
      provideRouter(routes),
      provideWebpack({
        'About': require('es6-promise!./app/about')
      })
    
    ]);
    // 以下是采用AsyncRoute进行异步加载
    
    import { Component } from '@angular/core';
    import { RouteConfig, RouterOutlet ,AsyncRoute } from '@angular/router-deprecated';
    import { Router } from '@angular/router-deprecated';
    
    import { SubRouteComponent }   from './subroute';
    
    @Component({
        template:  `
        <h2>RouteConfig Demo</h2>
        <button (click)="gotoDetail()">跳转</button>
        <router-outlet></router-outlet>
      `,
        directives: [RouterOutlet],
    })
    @RouteConfig([
        {path: '/',    name: 'SubRouteComponent',   component: SubRouteComponent, useAsDefault: true},
        // 异步按需加载
        new AsyncRoute({ path: '/detail', loader: () => require('es6-promise!./routedetail')('RouteDetailComponent'), name: 'RouteDetailComponent' }),
    ])
    export class RouteDemo {
    
        constructor(
            private router: Router) {}
    
        gotoDetail(){
            this.router.navigate(['RouteDetailComponent']);
        }
    }
  • 相关阅读:
    [HNOI 2015]菜肴制作
    [HNOI 2015]落忆枫音
    [NOIp 2009]靶形数独
    [HNOI 2010]Bounce 弹飞绵羊
    [CTSC 1999]拯救大兵瑞恩&[网络流24题]孤岛营救问题
    [SDOI 2008]Cave 洞穴勘测
    pandas 5 str 参考:https://mp.weixin.qq.com/s/Pwz9iwmQ_YQxUgWTVje9DQ
    比较工具
    当小内存遇上大量数据,你该怎么解决这个问题?
    python高性能编程 读书笔记
  • 原文地址:https://www.cnblogs.com/liuyt/p/5771940.html
Copyright © 2011-2022 走看看