3

简要问题描述:我想使用 TypeScript 生成 AMD 风格的命名模块,然后我想使用 requires.js 从捆绑和缩小的文件中加载这些模块。

问题:

  • 那可能吗?
  • 还是您建议另一种方法?

我想将捆绑和缩小所有脚本的好处(这样就不需要额外的 HTTP 请求)与加载由 TypeScript 生成的命名 AMD 模块相结合。


更新:我在考虑以下 JavaScript 解决方案:

define("greeter", ["require", "exports", "jquery"], function(require, exports, $) {
    function greet() {
        alert("Hello World!");
    }

    exports.greet = greet;
});

然后,我可以将生成的 JavaScript 模块捆绑并缩小到一个文件中,该文件可以很容易地被浏览器缓存。此外,require.js 不必去那里通过几个 GET 请求来获取模块——它们已经被定义了。另外,我拥有使用 TypeScript 生成这些模块的所有优势。

4

1 回答 1

2

我会通过在 TypeScript 中直接使用 RequireJS 来解决这个问题。

它有一个定义文件,我已经编写了一个在 TypeScript 中使用原始 RequireJS(而不是 import 语句)和 jQuery 的示例,您可能能够适应。

这是生成的 TypeScript 代码...

///<reference path="require.d.ts" />
///<reference path="jquery.d.ts" />
require(['jquery'], function ($) {
    $(document).ready(() => {
        alert('Your code executes after jQuery has been loaded.');
    });
});

如果这不能满足您的要求,请告诉我您将如何在 JavaScript 中执行此操作,我会很乐意提供 TypeScript 等价物。

于 2013-02-08T09:32:45.117 回答