여기에 내 질문에 답하십시오. 오래 동안 둘러 본 후에는 Requirejs 코드를 동 기적으로로드하거나로드 직후에 모듈을 호출하는 방법을 볼 수 없습니다. 그래서 나는 require
과 declare
메소드를 일시적으로 덮어 쓰는 코드를 작성했다. 내 유스 케이스에서는 작동하지만 다른 사람이 필요하면 변경해야 할 수도 있습니다. 지금보다 더 최적화 될 수있을 것이라고 확신하지만 작동합니다.
내가 유지하려고하는 on GitHub 코드를 찾을 수 있습니다.
(function() {
var self = {},
originalDefine = window.define,
originalRequire = window.require,
modules = [];
var define = function (id, deps, fn) {
if (id !== 'requireLib' && id !== 'text') {
modules.push({"id": id, "deps": deps, "fn": fn});
}
};
var require = function (deps, fn) {
var sortedModules = [],
unsortedModules = [],
resolvedDeps = {},
maxAttempts = 1000,
module,
dep,
depList,
canAdd,
i,
j;
unsortedModules = ([]).concat(modules);
while (unsortedModules.length > 0 && --maxAttempts > 0) {
for (i = unsortedModules.length - 1; i >= 0; i--) {
canAdd = true;
module = unsortedModules[i];
for (j = 0; j < module.deps.length; j++) {
dep = module.deps[j];
if (resolvedDeps[dep] === undefined) {
canAdd = false;
break;
}
}
if (canAdd) {
resolvedDeps[module.id] = module;
sortedModules.push(unsortedModules.splice(i,1)[0]);
}
}
}
for (i = 0; i < sortedModules.length; i++) {
module = sortedModules[i];
depList = [];
for (j = 0; j < module.deps.length; j++) {
depList.push(resolvedDeps[module.deps[j]]);
}
resolvedDeps[module.id] = module.fn.apply(this, depList);
}
depList = [];
for (i = 0; i < deps.length; i++) {
depList.push(resolvedDeps[deps[i]]);
}
fn.apply(this, depList);
window.define = originalDefine || function() {};
window.require = originalRequire || function() {};
};
window.define = define;
window.require = require;
window.require.config = function() {};
return self;
}());
너무 좋지 않아서 예상대로 작동하지 않습니다. http://plnkr.co/edit/ErIS1MCgS9vcxEnw9AKt?p=preview –
Common.js 구문이 아닌 모듈로드에 AMD 구문을 사용해야합니다. 사용법은 [the docs] (http://requirejs.org/docs/api.html)를 참조하십시오. AMD 프로젝트로 작업하지 않는다면, 사용을 권장하지 않습니다 : common.js가 모듈 전쟁에서 거의 승리했습니다. – Andrew
commonjs를 사용하여 모듈을로드 할 수있는 라이브러리를 알고 있습니까? (!) Synchrnously? –