0

我了解如何在 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。

4

1 回答 1

2

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

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

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

加载器.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 () {});
         }
      }
});
于 2012-12-20T13:24:36.320 回答