Chr*_*ght 5 lazy-loading angular2-aot angular
我正在使用一个非常简单的Angular 2应用程序,我没有使用Angular CLI(为了这个特定的问题,请不要建议我使用CLI).使用JIT编译器时,站点运行时没有任何问题.急切加载的模块以及延迟加载的模块都完全没问题.
我可以成功运行AOT编译器,然后使用Rollup执行树抖动,如Angular 2文档中所述.执行此操作时,站点运行时没有任何问题,因为急切加载的模块,但在尝试转到急切加载的模块时出现错误.这是错误消息:( GET http://atticus.local/app/contacts/contacts.module.ngfactory 404 (Not Found)这是我试图延迟加载的模块)
一个非常基本的问题:
假设上面问题的答案是肯定的,我想知道如何能够将AOT编译和延迟加载一起工作?我已经看到Angular CLI的GitHub问题已经提出了这个问题,看起来已经有了一些解决方案.这假设您使用的是CLI,我不是.我在输出AOT时注意到我的延迟加载模块没有*.ngfactory.ts也没有*.ngsummary.json创建,但仅适用于我急需加载的模块.这可能有意义吗?
作为参考,我为AOT运行的命令ngc -p tsconfig-aot.json具有以下内容tsconfig-aot.json
{
"compilerOptions": {
"target": "es5",
"module": "es2015",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es2015",
"dom"
],
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true,
"typeRoots": [
"node_modules/@types/"
]
},
"files": [
"app/app.module.ts",
"app/main-aot.ts"
],
"angularCompilerOptions": {
"genDir": "aot",
"skipMetadataEmit": true
}
}
Run Code Online (Sandbox Code Playgroud)
然后我跑去rollup -c rollup-config.js累积以执行树摇动.这是rollup-config.js:
import rollup from 'rollup'
import nodeResolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs';
import uglify from 'rollup-plugin-uglify'
//paths are relative to the execution path
export default {
entry: 'app/main-aot.js',
dest: 'aot/dist/build.js', // output a single application bundle
sourceMap: true,
sourceMapFile: 'aot/dist/build.js.map',
format: 'iife',
plugins: [
nodeResolve({ jsnext: true, module: true }),
commonjs({
include: ['node_modules/rxjs/**']
}),
uglify()
]
}
Run Code Online (Sandbox Code Playgroud)
如果我能提供更多信息或更清楚,请告诉我.谢谢!
| 归档时间: |
|
| 查看次数: |
596 次 |
| 最近记录: |