如何确定JS文件是否与AMD兼容?

时间:2013-01-25 17:15:25

标签: javascript jquery asynchronous amd curl.js

我正在使用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.coffeefoo.coffee,所以我很确定那些不兼容AMD。可能是错的,因为foo.coffee

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

最后。

如何查看js文件并说'是,AMD'或'不,不是AMD'?

2 个答案:

答案 0 :(得分:1)

寻找AMD的define(签名。这是相当肯定的赌注。遗憾的是,它几乎可以在文件中的任何位置。它通常位于顶部或底部。 AMD模块和多种UMD模块格式也有很多种:https://github.com/umdjs/umdhttps://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 / loader / cjsm11。

答案 1 :(得分:0)

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

如果您正在寻找exact AMD API,则应在文件开头搜索define字词。