Có cách nào để xác định mô-đun "tự động" tải các mô-đun khác trong RequireJS không? Nếu có, cách trình tối ưu hóa (r.js) hiểu cách/khi một mô-đun phải được bao gồm?Yêu cầu động trong RequireJS, nhận được lỗi "Tên mô-đun chưa được tải cho bối cảnh"?
Ví dụ, chúng ta hãy dynModules
một module trong đó xác định các cặp tên/đường dẫn:
define([], function() {
return ['moduleA', 'moduleB']; // Array of module names
});
mô-đun khác là sẽ nạp module tự động, dựa trên mảng. Điều này sẽ không làm việc :
define(['dyn_modules'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});
... mang lại cho tôi:
Uncaught Error: Module name "moduleA" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded
tôi có thể giải quyết các lỗi, nhưng nó không phải là "năng động" nữa:
define(['dyn_modules', 'moduleA', 'moduleB'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});
Cảm ơn thời gian của bạn, tôi đã tìm thấy một giải pháp sau khi tìm kiếm trên trang web RequireJS. Xem câu trả lời của tôi. – gremo
Câu hỏi duy nhất tôi có là: sử dụng 'require (_. Values (Config), ...)' là mã async, phải không? Điều đó có nghĩa là tôi cần sử dụng kiểu gọi lại khi 'require' kết thúc, đúng không? – gremo
Có, và bạn đang sử dụng cú pháp gọi lại trong câu trả lời của bạn. 'require (_. values (Config), hàm() {' tương đương với 'require (dynModules, function() {' trong mine. Cả hai đều sử dụng một chuỗi các chuỗi như tham số đầu tiên và cung cấp một hàm cho gọi lại là Tham số thứ 2. – explunit