【发布时间】:2020-05-01 09:45:46
【问题描述】:
上下文
我正在创建一个具有 2 种初始化方式的库:
- 自动 - 我为您异步下载一些东西,然后初始化。
- 手动 - 你之前已经下载了这些东西,然后我立即初始化库(同步)。
我过去曾成功实现过可摇树的库。我们通常会做的是将代码分成两个模块,让应用程序开发人员选择导入哪个模块,从而允许对另一部分进行 tree-shaking。与此类似:
import { LibraryAsyncModule } from 'my-library'; // ???? Or LibrarySyncModule
@NgModule({
imports: [LibraryAsyncModule] // ???? Or LibrarySyncModule
})
export class AppModule { }
我想要完成的事情✔
为了减少使用我的库的学习曲线,我正在尝试设计一个包含相关模块并允许摇树的单个导入模块。下图显示了所需的结构。
我想避免什么????
我可以创建工厂提供程序来检测传递给forRoot() 的配置并在运行时 加载相应的模块。但是,在运行时导入模块会将初始化变为异步,并且还会阻止 Angular 将使用的模块与应用程序捆绑在一起。
我需要一个构建时间解决方案。我的原型表明,在核心模块中简单地包含同步和异步模块会导致两者都被捆绑在一起。 那个单一的模块会是什么样子?有什么想法/建议吗? ????
【问题讨论】:
标签: javascript angular typescript webpack