【发布时间】:2018-10-29 09:49:46
【问题描述】:
我有一个 Angular 5 库,我将它公开为一个包,供其他应用程序从他们的 node_modules 使用。
目前,该应用程序是使用 rollup 和 gulp 即时编译 (JIT) 并作为包导出的。因此,开发者应用程序以 JIT 编译的形式使用我的包。
对 AOT 的研究让我相信,任何 Angular 应用程序在 AOT 编译时都比浏览器上的 JIT 应用程序性能更高。但是,作为库开发人员,我想知道如果我公开我的 AOT 编译库,应用程序开发人员是否会获得任何性能优势?
我使用ng-bootstrap 和许多其他开源库在我的模块中创建组件,并在它们之上添加自定义样式或功能。我在模块中使用的所有库是否也需要采用它们的 AOT 形式,或者我可以使用它们的 JIT 对应物?
另外,我认为为我的库提供单独的包是个好主意 - packageName 和 packageName-aot 以便用户可以选择他们想要使用的任何库。
除了整个代码重构(将模板中使用的私有变量更改为公共变量、删除箭头函数、lambda 表达式等)之外,在以 AOT 形式公开我的库模块之前,我还有什么需要注意的吗?
由于某些限制,我无法使用 Angular CLI,因此必须依赖 @ngtools/webpack 来获得 AOT 编译(如果有)。
目前,我的tsconfig.json有以下选项:
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMedtadataEmit": true,
"fullTemplateTypeCheck": true
}
我在互联网上进行了很多搜索,但 Angular AOT 文档非常模糊,对于我在这里尝试做的事情并不是很清楚。任何方向都会非常有帮助。
谢谢!
【问题讨论】:
-
我认为与滚动自己的构建相比,您花费更少的时间让您的项目使用 angular-cli。
-
@elclanrs 如果可以的话,我会的! :)
标签: javascript angular angular5 angular2-aot aot