2013-05-10 68 views
0

我想要给文件夹结构here使用require.js加载JavaScript库

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

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

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

回答

1

我找不到任何提及的shim在文档中是“不推荐”的;我不会太担心这件事。这是一种经过充分测试并且日益流行的将不符合AMD标准的库与RequireJS进行桥接的方法(以前,唯一的方法是构建一个包含在定义调用中的专用AMD版本;这会使图书馆维护人员付出额外的努力) 。

如果“最新开发版”你的意思是jQuery的预发行版本,它看起来像它确实支持AMD(看看下载页面的pre-release section,向下滚动至最底部source code file:你会看到与AMD代码)

Backboneunderscore需要在任何情况下垫高,因为它们是AMD无关,所以没有从它(这两个特定库即使在shim config option documentation example使用,这样就可以逃脱只是重用)。

2

@ kryger的权利,jQuery是AMD兼容的,垫片非AMD模块没有错。

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

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

所以在函数体,上面:

  • 您可以通过$参数访问jQuery的;但
  • 下划线不会自行输出给AMD,所以_参数将为undefined

一些AMD兼容模块(如jQuery的)也行“独立”,如在一个HTML标签<script>,他们将在那里出口到全局命名空间(例如window.$)。

我认为jQuery的还是出口全球$当您通过AMD加载器加载它,所以你可以只在您的入口点/加载的jQuery一旦第一需要的时候它总是访问全局$(而不是定义$参数)。另外,如果你使用jQuery插件(修改全局的插件),它可能会让你感到困惑!