我的HTML是這樣的:爲什麼基金會似乎垃圾RequireJS模塊?
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script data-main="/static/scripts/main" src="/static/scripts/require.js"></script>
</head>
<body></body>
</html>
static/scripts/main
看起來是這樣的:
requirejs.config({
paths: {
"foundation": '/static/scripts/foundation-6/js/foundation.min'
}
});
require(["foundation", "moduleA"], function(foundation, moduleA) {
console.log("main.js loaded dependencies");
});
而且static/scripts/moduleA.js
是:
console.log("ModuleA loaded");
define(function() {
console.log("inside moduleA callback");
return {
Blah: "Blah!"
}
});
我可以看到moduleA.js
腳本得到由require
裝,但它不被視爲一個模塊,我從控制檯看到內部回調從未被執行。在main.js
的console.log
行中的斷點顯示返回的moduleA
不是我期望的模塊,而是Interchange(element, options)
的實例,而返回的foundation
對象是Abide(element, options)
的實例。這些似乎是基礎組件,但我不明白他們爲什麼會返回到這裏。
但是,說我再通過改變需要聲明main.js
刪除基金會依賴這樣:
require(["moduleA"], function(moduleA) {
console.log("main.js loaded dependencies");
});
運行使一切按預期方式工作 - 我現在看到的「moduleA回調內部」消息控制檯和斷點顯示我的moduleA
對象包含一個Blah成員,如預期的那樣。
這是怎麼回事? Foundation如何攔截這個require()調用並返回一些不需要的內容?我應該把基金會納入這個項目有什麼不同的方式?
是的,我想就是這樣。在某些時候,我認爲我讀過基金會可能只是需要這種方式,源代碼確實提到了AMD的頂部,但顯然它不能,並且不知何故它設法踐踏整個模塊系統。我會稍微再打開一下,看看有沒有人回答這個問題。 – Kylotan