2

我正在使用curlrequire(同时评估两者)异步加载 js 文件。我在原型应用程序中使用了 5 个 js 文件:

jquery.min.js // off of CDN
Bacon.js // reactive programming tool
curl.js  // js loader
index.coffee // page specific
foo.coffee // app specific

好的,所以我构建了index.coffeeand foo.coffee,所以我很确定它们与 AMD 不兼容。虽然可能是错的,因为foo.coffee

if module? && module.exports?
  module.exports = Foo

在最后。

如何查看 js 文件并说“是的,AMD”或“不,不是 AMD”?

4

2 回答 2

1

寻找define(AMD 的签名。这是一个相当确定的赌注。不幸的是,它几乎可以在文件中的任何位置。它通常位于顶部或底部。AMD 模块和多种 UMD 模块格式也有很多变体:https ://github.com/umdjs/umd和https://gist.github.com/unscriptable/4118495

Fwiw,您也可以将原始 CommonJS 模块与 curl.js 一起使用。您必须将 CJS 模块放入一个文件夹并告诉 curl 它是一个使用 CJS 模块的包:

curl.config({
    packages: [
        { name: 'foo', location: 'path/to/foo-folder', main: 'foo',
            config: { moduleLoader: 'curl/loader/cjsm11' }
        },
        { name: 'curl', location: 'path/to/curl/src/curl', main: 'curl' }
    ]
});

您需要 curl 包(或路径)来告诉 curl 在哪里可以找到 curl/loader/cjsm11。

于 2013-03-06T20:35:29.103 回答
0

AMD 意味着,您可以根据需要评估代码,而不是在加载时。因此,如果您的代码在下载后立即执行 - 它不是 AMD。如果它有一个包装器,允许按需执行代码 - 它可以像 AMD 模块一样工作。

如果您正在寻找确切的 AMD APIdefine ,您应该在文件开头搜索word。

于 2013-01-25T17:29:01.413 回答