逐渐从包括每个JS文件到模块捆绑

时间:2018-10-17 15:21:09

标签: javascript typescript webpack

在我们的AngularJS应用程序中,我们目前有大量(400多个)文件,这些文件通过<script>标签被包含。这些文件的顺序如下:

  1. AngularJS脚本文件
  2. 第三方插件/模块
  3. 业务逻辑文件
    • 模块
    • 服务
    • 控制器/组件/指令

我们想使用模块捆绑器和TypeScript寻求更好的方法。新文件已经用TypeScript编写,但是没有使用import / export。为了使事情变得容易,我们可以将每个JavaScript文件转换为TypeScript文件,并在可行的时间内修复所产生的错误。

但是,在执行此操作之前,我们希望有一个可行的策略来逐步使用import / export。我在想类似不时重写一个模块的事情,从依赖树中的模块开始。

但是我无法实现这一目标,但是我很确定其他人以前必须解决此问题。

1 个答案:

答案 0 :(得分:1)

一旦确定了模块捆绑器,您将需要了解其功能,用于(1)允许页面上的其他JavaScript访问捆绑中定义的内容,以及(2)允许捆绑访问其他捆绑器中定义的内容页面上的JavaScript。 (如果能够按照严格的依赖关系顺序迁移,则可能永远不需要#2。)例如,对于Webpack,#1将是library* output options,而#2将是externals。然后,只需将代码一点一点地移入模块中,并根据需要调整配置,以使代码的每个部分都可以从代码的另一部分访问其所需的内容。由于Webpack仅支持单个库导出模块,因此在过渡期间,您可能必须维护一个虚拟模块,该模块仅重新导出需要从捆绑包外部的代码访问的所有模块。这有点单调乏味,并且代表了一次迁移所有内容时无需做的额外工作,但是您可以决定为逐步迁移而付出这笔费用是值得的。

如果从非模块TypeScript文件中的TypeScript模块文件获取类型信息时遇到问题,请参见this answer,以获取解决方法。