我正在使用requirejs,並且在我的一個文件中,下劃線是依賴項。下面是包含下劃線的一段代碼。Underscorejs與requirejs一起使用時返回undefined
define(["lib/underscore"], function(_) {
// Here _ is undefined
});
通過一些研究,我發現下劃線將它添加到全局命名空間中。 Underscore返回undefined,這就是爲什麼_變得未定義。如果我用下面的方法_是有效的。
define(["lib/underscore"], function() {
// Here _ is defined
};
在上面的代碼中,我不覆蓋添加到全局名稱空間的_。
在我的探索,找出原因下劃線不返回_我發現underscore.js
// AMD registration happens at the end for compatibility with AMD loaders
// that may not enforce next-turn semantics on modules. Even though general
// practice for AMD registration is to be anonymous, underscore registers
// as a named module because, like jQuery, it is a base library that is
// popular enough to be bundled in a third party lib, but not be part of
// an AMD load request. Those cases could generate an error when an
// anonymous define() is called outside of a loader request.
if (typeof define === 'function' && define.amd) {
define('underscore', [], function() {
return _;
});
}
下劃線時通過requirejs它應該返回加載它意味着這下面的一段代碼_,而不是不確定的。這不會發生在我身上。任何人都可以幫助我這個。
1.當下劃線被調用時,define存在,我在下劃線之前加載RequireJS。 2.路徑也是正確的我能夠調試到我上面指定的代碼。 – kishore
@kishore Underscore將自己註冊爲*一個已命名的模塊*。這意味着*應該按名稱引用,而不是路徑*引用。我答案中的第一個重點應該解決這個問題。 – Joseph
所以我必須在requirejs config中定義一個路徑 – kishore