Angular2延迟加载模块:如何使用SystemJS Builder创建构建包?
发布时间:2020-12-17 07:28:08 所属栏目:安全 来源:网络整理
导读:我正在使用Angular2和SystemJS来创建Web应用程序. 我的应用程序中有一些模块,在路由器配置中我使用延迟加载来打开它们. 这是我的应用程序的路由文件,延迟加载两个模块: const appRoutes: Routes = [ { path: '',component: MainComponent,canActivate: [Aut
我正在使用Angular2和SystemJS来创建Web应用程序.
我的应用程序中有一些模块,在路由器配置中我使用延迟加载来打开它们. 这是我的应用程序的路由文件,延迟加载两个模块: const appRoutes: Routes = [ { path: '',component: MainComponent,canActivate: [AuthGuard],children: [ { path: 'dashboard',component: DashboardComponent },{ path: 'first-section',loadChildren: 'app/modules/FIRST-SECTION/first-section.module' },{ path: 'second-section',loadChildren: 'app/modules/SECOND-SECTION/second-section.module' },{ path: 'documents',component: DocumentsComponent },{ path: 'users',component: UsersComponent },{ path: '',redirectTo: 'dashboard',pathMatch: 'full' } ] } ]; 我使用Gulp为开发服务器和生产构建创建任务. gulp.task('app-bundle',function() { var builder = new Builder('src','src/systemjs.config.js'); return builder.buildStatic('app/main.js','build/scripts/app.min.js',{ minify: true }); }); 但是……如果我尝试在构建包上运行服务器,那么当它试图运行延迟加载的模块时应用程序不起作用. GET http://127.0.0.1:8080/app/modules/FIRST-SECTION/first-section.module 404 (Not Found) 这是我的systemjs.config.js文件: (function (global) { System.config({ paths: { 'npm:': './node_modules/',},map: { app: 'app','@angular/core': 'npm:@angular/core/bundles/core.umd.js','@angular/common': 'npm:@angular/common/bundles/common.umd.js','@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js','@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js','@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js','@angular/http': 'npm:@angular/http/bundles/http.umd.js','@angular/router': 'npm:@angular/router/bundles/router.umd.js','@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js','@angular/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js','rxjs': 'npm:rxjs','lodash': 'npm:lodash/lodash.min.js','jquery': 'npm:jquery/dist/jquery.min.js',packages: { app: { main: './main.js',defaultExtension: 'js' },rxjs: { defaultExtension: 'js' },} }); })(this); 编辑: 如在带有静态包的SystemJs Builder站点上所述,我们不需要SystemJ来加载模块.实际上我正在创建一个静态包(使用buildStatic而不是bundle),但由于我排除了SystemJs,似乎没有其他方法来延迟加载模块.
看看您是否可以通过提供所需模块的映射来安抚system.js.所以当system.js找到路径模块/ FIRST-SECTION / first-section.module时,你告诉它:嘿,你能不能在控制台中将这条路径映射到模块/ FIRST-SECTION / first-section.module.js .希望这可以帮助 .
(function (global) { System.config({ paths: { 'npm:': './node_modules/','modules/FIRST-SECTION/first-section.module':'modules/FIRST-SECTION/first-section.module.js',......................... your other mappings here ......................... 'lodash': 'npm:lodash/lodash.min.js',} }); })(this); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |