首页 > 解决方案 > Angular 6 - 库上的 AOT 编译,用作主应用程序中的延迟加载插件

问题描述

我正在开发一个在 Angular 6 中完成的基于插件的应用程序。我有 2 个项目,一个主项目和一个我开发插件的 lib 项目。插件使用 ng build --prod 构建到 UMD 中,然后使用 SystemJs 加载到主应用程序中,在主应用程序中使用 Compiler 类在运行时进行编译(构建的插件部署在另一台服务器上)。主应用程序在构建时不包含对 lib 项目的引用。

只要我在开发模式下运行主应用程序,它就可以正常工作。当我在 prod 中尝试它时,由于 JIT 编译器在 prod 构建中被删除,它崩溃并显示“错误:未加载运行时编译器”。

我的问题是:是否可以提前构建一个 Angular 6 Cli Lib 项目(或者不一定是一个 cli lib 项目),使用 SystemJs 加载它,然后只使用组件工厂来创建动态组件?我怎么能做那个构建?

我无法将 lib 与主应用程序一起构建,因为最终目标是让其他开发人员为应用程序创建插件,并且并非所有组件都将在运行时使用。

如果没有 AOT,我无法保留主应用程序,因为它会变得非常大,并且性能会受到很大影响。

我也知道 Angular Elements,但我也希望能够创建 AOT lib 插件。

标签: angularwebpackangular-aotangular-compilerngtools

解决方案


推荐阅读