【问题标题】:Resolving circular dependencies for requireJS解决requireJS的循环依赖
【发布时间】:2014-06-04 12:58:09
【问题描述】:

我们有大量使用外部模块的 typescript 文件,而且我们遇到了循环依赖。 (我查看了其他问题like this,但似乎没有人回答我的具体问题。)这是在打字稿中,所以我们受限于它生成 javascript 的方式。

  1. 首先,是否有一个工具可以读取我的所有文件(.ts 或 .js)并标记我存在循环依赖的地方?我认为,如果我们能够识别它们,我们就可以消除大部分。
  2. 我们有几种情况,我们必须建模的设计强制循环依赖。有没有办法在 requireJS 中处理这个问题(同样由 typescript 创建)?
  3. 答案是让 typescript 编译器从所有 .ts 文件中创建一个 .js 文件吗?如果是这样,这种方法在调试和生产中是否有任何缺点?

谢谢 - 戴夫

【问题讨论】:

  • For 3.:如果你使用--out FILE作为编译器标志,所有文件将被连接到指定的文件中。
  • 建议您尝试使用带有 ts-loader 的 webpack 进行生产构建。你可以在这里寻找一个有趣的插件npmjs.com/package/circular-dependency-plugin

标签: javascript requirejs typescript circular-dependency


【解决方案1】:

是否有一个工具可以读取我的所有文件(.ts 或 .js)并标记我存在循环依赖的位置?

Atom-TypeScript 可以做循环依赖分析:https://github.com/TypeStrong/atom-typescript/blob/master/docs/dependency-view.md#circular

这看起来也很有趣:https://www.npmjs.org/package/madge

有没有办法在 requireJS 中处理这个问题

你最初是不确定的,但你可以再次requirehttp://requirejs.org/docs/api.html#circular

答案是让 typescript 编译器从所有 .ts 文件中创建一个 .js 文件吗?如果是这样,这种方法在调试和生产中是否有任何缺点?

是的--out。 -ves :较慢的编译时间,必须使用源映射进行调试。 无法在生产时延迟加载部分代码库。

【讨论】:

  • 关于 require 链接的循环问题 - typescript 创建的 .js 遵循建议,但 requireJS 在尝试加载循环引用时仍然遇到错误。打字稿生成的 .js 还需要其他东西吗?
  • Madge 看起来很完美,但它需要 sudo 并且我在 Windows 上:(
  • 关于 require 链接的循环问题 - typescript 创建的 .js 遵循建议,但 requireJS 在尝试加载循环引用时仍然遇到错误。生成的打字稿是否还需要其他东西 - 不。可以分享一下TS吗?
  • 我想举一个简单的例子。问题是只要我简化它,问题就会消失。从好的方面来说,其中一个简化对我们有用,所以我们现在很好。但是,我还是想知道这里发生了什么。
  • 谢谢 - 这对您有很大帮助。
猜你喜欢
  • 2020-11-12
  • 1970-01-01
  • 2013-02-04
  • 2010-10-27
  • 1970-01-01
  • 2017-04-27
相关资源
最近更新 更多