angular2 cli怎么按需加载非ts的普通js
1个回答
2017-07-14 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
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']);
}
}
这样就需要按需加载,当不长访问的页面,我们就单独打包成一个页面,当客户访问时,再去加载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']);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询