使用require.js加载JavaScript库

时间:2013-05-10 12:45:07

标签: backbone.js requirejs amd

我正在尝试将文件夹结构设为here

不同之处在于我正在使用这些库的所有最新开发版本。但是,它们没有正确上传,甚至是jquery。我无法理解AMD兼容的意思。

我只是下载了这些库。这是否意味着它们不兼容AMD?这些库是否有单独的AMD兼容版本?我们是否需要使用shim config来加载非AMD兼容的?。

我害怕使用垫片,因为require.js官方文档说它不推荐使用。

2 个答案:

答案 0 :(得分:2)

@ kryger是正确的,jQuery与AMD兼容, shimming 非AMD模块没有任何问题。

兼容AMD只意味着该模块符合AMD specification;因此它输出了它的功能。例如:

define(['jquery', 'underscore'], function ($, _) {
    // function body
});

所以在函数体中,上面是:

  • 您可以通过$参数访问jQuery;但
  • 下划线不会为AMD导出自身,因此_参数将为undefined

某些与AMD兼容的模块(例如jQuery)也可以“独立”运行,例如在HTML <script>标记中,它们将导出到全局命名空间(例如window.$)。

我认为当您通过AMD加载程序加载jQuery时,jQuery仍会导出全局$,因此您可以在入口点/首次加载时加载jQuery一次,并始终访问全局{{1 (而不是定义$参数)。

另外,如果你使用jQuery插件(修改全局插件),它可能会有点混乱!

答案 1 :(得分:1)

我在文档中找不到提及shim“不推荐”的内容;我不会太担心它。它是一种经过充分测试且越来越流行的使用RequireJS桥接非AMD兼容库的方法(以前唯一的方法是在define调用中构建一个专用的AMD版本;这会给库维护者带来额外的努力)

如果“最新开发版本”是指jQuery的 Pre-Release Builds ,那么它似乎支持支持AMD(请查看pre-release section下载页面,向下滚动至source code file的最底部:您将看到与AMD相关的代码)

Backboneunderscore在任何情况下都需要填充,因为它们与AMD无关,因此无法避免它(这两个特定的库甚至在shim config option documentation example中使用,所以你可以重用那个)。