javascript - 如何在 requireJS 中回退到整个文件夹

标签 javascript requirejs dynamic-script-loading

我明白了如何在 requireJS 中配置单个文件的后备,如下所示:

    var skin = "christmas";

    requirejs.config({

    paths: {
        languagesLocal : [
            BaseUrl +  skin + '/js/languagesLocal',
            BaseUrl +  "default" + '/js/languagesLocal'

        ]
    }
});

因此,如果没有“圣诞节”皮肤,我将使用默认脚本。

现在 - 我的问题是 - 如何将完整的文件夹设为后备文件夹?因此,如果皮肤文件夹中不存在一个文件 - 它将在另一个文件夹中进行回退。 我需要检查每个文件是否存在,如果不存在,则应该有一个回退到默认文件夹

我尝试使用baseUrl来做到这一点:

 var skin = "christmas";

        requirejs.config({

       baseUrl: [
        BaseUrl +  skin + '/js/',
        BaseUrl +  'default' + '/js/'
        ],
    });

但它失败了,并将 baseUrl 呈现为与 2 个字符串组合的一个巨大 URL。

最佳答案

编辑:我误解了你的问题。我知道单个模块是可能的:

http://requirejs.org/docs/api.html#errbacks

使用这种技术,您可以创建一个模块来验证每个模块的存在:

loader.js

define(['a', 'b'], function(a, b) {}, 
   function(err) {
      if (err.requireModules) {
         for(var i = 0; i < err.requireModules.length; i++) {
            requirejs.undef(requireModules[i]);

            requirejs.config({
               baseUrl: BaseUrl +  'default' + '/js/'
            });
            require([requireModules[i]], function () {});
         }
      }
});

关于javascript - 如何在 requireJS 中回退到整个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13973105/

相关文章:

javascript - 如何在我自己的函数中使用yield?

javascript - 堆积面积图的填充会反转 d3

javascript - 最佳阵列设置

javascript - RequireJS:配置参数未传递到包中

javascript - 使用上下文时 RequireJs 忽略配置

javascript - 如何避免被大量的框架和新版本的 JavaScript 淹没?

javascript - 为什么通过 DOMParser 创建的脚本元素不执行?

javascript - Browserify 与多个包的效率

javascript - 当元素在其中绝对定位子元素时获取元素的完整宽度

Javascript:动态添加的脚本无法在另一个脚本中找到先前定义的函数