1
AMD是否允許您根據其他模塊定義導出爲動態的模塊?AMD模塊中的動態導出
我的問題是define
立即返回,即使在正文中有require
調用。這意味着,如果模塊的定義依賴於其他模塊,則取決於它的任何模塊都不能確定該模塊是否已完全加載,即使依賴性已滿足。
一些代碼來解釋我的問題:
// A module that exports one function 'f'. The implementation of this f comes
// from another module, dynamically selected based on a condition.
define("mymodule", function (require, exports) {
var functionImplModule = someCondition ? "function-impl1" : "function-impl2";
require([functionImplModule], function (functionImpl) {
exports.f = functionImpl;
});
});
// Entry point. I want to use module.f in some code.
require(["mymodule"], function (mymodule) {
// Can't use mymodule.f here yet, because the require() of 'mymodule' isn't done yet
console.log(mymodule.f);
});
可以這樣AMD在做什麼?或者這樣的代碼如何更好地構造?
如果我正確解釋了這個問題,那麼您使用的是[簡體CommonJS包裝糖](http://requirejs.org/docs/whyamd.html#sugar),它依賴於解析源代碼的魔法做出簡單的假設,並且與動態依賴不兼容。如果你重寫你的定義更直接的AMD方式:'define([someCondition?「function-impl1」:「function-impl2」],function(functionImpl){return {f:functionImpl};})' someCondition'不依賴於mymodule的依賴;如果它是依賴的,你可以補充說明。 – 2017-04-01 15:40:32