我是RequireJS noob。當我使用「require.config」並且包含一個名稱不同於jQuery的jQuery路徑時,結果與預期不符。在RequireJS中 - 不能在路徑中別名jQuery名稱
這裏有一個非常簡單的例子來幫助解釋我的問題。文件
結構
root
├── Index.htm
└── scripts
├── libs
│ ├── jquery-1.7.1.js
│ └── require.js
├── main.js
└── someModule.js
的index.htm
<html>
<head>
<title>BackboneJS Modular app with RequireJS</title>
<script data-main="scripts/main" src="scripts/libs/require.js"></script>
</head>
<body>
<h3>BackboneJS is awesome</h3>
</body>
</html>
這裏腳本標記引用需要腳本/庫。當require運行時,腳本目錄中名爲main.js的JavaScript文件應該被執行。只要
main.js
require.config({
"paths": {
"mod1": "someModule"
}
});
require(["mod1"], function (sm) {
console.log(sm.someValue);
});
在我的經驗,「MOD1」可以是任何東西,因爲它是引用在require.config路徑和需要方法相同。
someModule.js
define([], function() {
console.log();
return { someValue: "abcd" };
});
只是爲了完整性我包括someModule.js
,當我有JQuery的發生感知世態炎涼。
在下面的main.js中,我將jQuery添加到了config和require方法中。
Main.js
require.config({
"paths": {
"jquery": "libs/jquery-1.7.1"
,"mod1": "someModule"
}
});
require(["mod1", "jquery"], function (sm, $) {
console.log(sm.someValue);
console.log($);
});
通過附加jQuery的一切似乎仍然有效。 「console.log($)」寫入jQuery函數。
現在踢球。在下面的代碼我改「jQuery的」到「jqueryA」在這兩個路徑,並要求
require.config({
"paths": {
"jqueryA": "libs/jquery-1.7.1"
,"mod1": "someModule"
}
});
require(["mod1", "jqueryA"], function (sm, $) {
console.log(sm.someValue);
console.log($);
});
現在「的console.log($)寫道:」零。
這應該是預期的嗎?有沒有理由爲什麼名稱必須是jQuery,但對於mod1它可以是任何東西?
我可以解決這個沒有問題,但這個問題似乎很奇怪。我知道我可以使用組合的RequireJS和jQuery文件,但是當jQuery有更新時,我不想依賴RequireJS來包含新的jQuery。
感謝您的解釋!有了這些知識,我解決了我自己的jquery/requirejs問題。 – bunnyhero 2012-08-12 04:04:22