2011-09-24 35 views

回答

0
require(["underscore"], function() { 
    console.log(_ === window._); 
}); 
+6

野生的JavaScript程序员出现... – htmldrum

0

这一切都取决于脚本的基础。 因为我没有看到你指定的baseUrl,该的baseUrl将是默认的, 这意味着,无论是两两件事:

  1. 脚本是直接在HTML文件中,然后在你的情况下,它 将因此寻找underscore.js在HTML文件
  2. 脚本是由你的HTML 文件引用的JavaScript文件的同一目录下,它现在将搜索您 自定义JavaScript文件的目录underscore.js。

检查underscore.js是否确实存在。

2

我认为问题是传递给你的回调的参数的顺序。

应该是:

require(['underscore'], function (_, $) { 
... 
}); 

你也需要使用下划线1.2.1版里面添加这个功能。

+0

绝对顺序是问题的一部分 –

0

下面是检查站为你确保你所需要的工作

  1. 获取require-jquery.js并把它放到你/js-root目录

  2. 添加到您的HTML,收盘</body> tag之前: <script data-main="/js-root/main-js-file-name" src="/js-root/require-jquery.js"></script>

  3. 获取underscore adapted for AMD,并将其写入/js-root dir以及

  4. main-js-file-name.js

写:

require(["jquery", "underscore"], function ($, _) { 
    ... 
}); 

同样,在非主AMD JS文件,定义模块时,要使用_,写:

define(["jquery", "underscore"], function ($, _) { 
    ... 
    return theModuleObjectOrFunction; 
}); 
7

请注意,underscore.js不会将自己注册为AMD模块(虽然它在早期版本中只有短暂的时间),但是我们不能在要求()调用中使用,而不使用“中间:”一些配置,像这样:

require.config({ 
    paths: { 
     jquery: 'lib/jquery.min', 
     underscore: 'lib/underscore-min' 
    } 
    shim: { 
     "underscore": { 
      exports: "_" 
     } 
    } 
}); 

请参阅该文档为:http://requirejs.org/docs/api.html#config-shim

shim:之前加入require.js,你可以做一些类似的插件使用。JS(如​​果您需要使用旧版本的require.js)。

在撰写本文时,require.js的当前版本是2.1.8。

或者,你可以使用lodash.js作为一个下拉更换为underscore.js - 它自己注册为AMD的模块,这样你就可以无需额外配置使用它:http://lodash.com/