【问题标题】:Output require() construct with AMD generation使用 AMD 生成输出 require() 构造
【发布时间】:2015-05-12 13:57:40
【问题描述】:

我目前有一组 RequireJs 模块定义为:

require(['dep1', 'dep2'], function(dep2, dep2) {
    ...
});

我希望将这些转换为 TypeScript 模块,但是 AMD 一代使用 define() 构造输出它们:

define(['dep1', 'dep2'], function(dep2, dep2) {
    ...
});

我可以看到它们本质上是等效的。但是我一直在以下基础上工作:

  • 定义:当您希望能够将模块传递给其他模块时。
  • 需要:当模块只需要执行时

这些假设是多余的吗?或者有没有办法指示 TypeScript 为模块输出 require() 构造?

【问题讨论】:

    标签: requirejs typescript amd


    【解决方案1】:

    这些假设是多余的吗?

    是的。 require 只应在您想要延迟加载时使用。

    有没有办法指示 TypeScript 输出模块的 require() 构造

    是的。使用 requirejs 定义:https://github.com/borisyankov/DefinitelyTyped/blob/master/requirejs/require.d.ts 并编写代码手动调用require 函数。

    【讨论】:

    • 好吧,澄清一下,没有办法从模块语句中输出 require() 构造,对吗?我遇到的问题是我在模块内定义了一个类以避免污染全局命名空间。然而 TypeScript 抱怨必须在模块内声明一个类或者是一个顶级语句。你会建议只使用“导出模块”而不用担心它是一个输出的 define() 构造吗?
    • . Would you recommend just using "export module" and not worry that it's a define() construct that is output?
    【解决方案2】:

    您可以使用require() 手动编写一个文件来加载其他模块,也可以在加载require.js 的元素上使用data-main 属性。

    【讨论】:

      猜你喜欢
      • 2012-02-29
      • 2016-11-08
      • 2017-01-23
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多