2011-09-24 33 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/