我试图在这里给出文件夹结构。
不同之处在于我使用的是这些库的所有最新开发版本。但是,它们没有正确上传,即使是 jquery。我不明白 AMD 兼容是什么意思。
我只是下载了那些库。这是否意味着它们不兼容 AMD?这些库是否有单独的 AMD 兼容版本?我们是否需要使用 shim 配置来加载非 AMD 兼容?
我害怕使用 shim,因为 require.js 官方文档说不推荐。
我试图在这里给出文件夹结构。
不同之处在于我使用的是这些库的所有最新开发版本。但是,它们没有正确上传,即使是 jquery。我不明白 AMD 兼容是什么意思。
我只是下载了那些库。这是否意味着它们不兼容 AMD?这些库是否有单独的 AMD 兼容版本?我们是否需要使用 shim 配置来加载非 AMD 兼容?
我害怕使用 shim,因为 require.js 官方文档说不推荐。
@kryger 说 jQuery 与 AMD 兼容是对的,并且填充非 AMD 模块没有任何问题。
AMD 兼容只是意味着该模块符合AMD 规范;因此它导出了它的功能。例如:
define(['jquery', 'underscore'], function ($, _) {
// function body
});
所以在上面的函数体中:
$
;但_
参数将是undefined
.一些与 AMD 兼容的模块(例如 jQuery)也可以“独立”工作,例如在 HTML<script>
标记中,它们将导出到全局名称空间(例如window.$
)。
我认为$
当您通过 AMD 加载器加载 jQuery 时,它仍然会导出全局变量,因此您只需在入口点/第一次需要它时加载 jQuery 并始终访问全局变量$
(而不是定义$
参数)。
此外,如果你使用 jQuery 插件(它修改了全局插件),它都会变得有点混乱!
我在文档中找不到shim
“不推荐”的任何提及;我不会太担心它。这是一种通过 RequireJS 桥接非 AMD 兼容库的经过充分测试且越来越流行的方法(以前,这样做的唯一方法是构建一个包含在定义调用中的专用 AMD 版本;这给库维护者带来了额外的努力) .
如果“最新开发版本”是指 jQuery 的Pre-Release Builds,它看起来确实支持 AMD(查看下载页面的预发布部分,向下滚动到源代码文件的最底部:您将参见与 AMD 相关的代码)
Backbone
并且underscore
在任何情况下都需要填充,因为它们与 AMD 无关,所以没有逃避它(这两个特定的库甚至在shim config option documentation example中使用,所以你可以重用它)。