【发布时间】:2014-12-24 14:12:35
【问题描述】:
我想创建一个 理想情况下看起来像这样的 requirejs 扩展:
var versions = ['one', 'two', 'three'];
define({
load: function (name, req, onload, config) {
var load = function (version) {
try {
req([name + '.' + versions[version]], function (value) {
onload(value);
});
} catch(ex) {
if (version === versions.length - 1)
throw err;
load(version + 1);
}
};
load(0);
});
});
基本上,我想这样做:
require(['plugin!my/file'], function (dep) {
});
而幕后的逻辑应该是:
检查 my/file.one.js。如果存在,则返回它。如果没有……
检查 my/file.two.js。如果存在,则返回它。如果没有……
检查 my/file.three.js。如果存在,则返回它。如果没有……
投掷
问题似乎是req抛出的请求不存在文件的错误是异步的,所以无法通过这种方式捕获。
对于完成此类功能有什么建议吗?
我找到了requirejs fallbacks,但这些仅适用于您的要求配置中定义的路径。我希望标准要求调用具有完全相同类型的功能。
我还发现了 require.defined 和 require.specified,但似乎只适用于通过 require.config 定义的模块或在尝试加载给定模块之后。
【问题讨论】:
标签: javascript requirejs