要求带有requirejs的可选javascript文件(例如,需要特定于语言环境的文件)

时间:2013-05-29 03:42:29

标签: requirejs

我们依赖的一些jquery插件提供了包含区域设置/文化特定文件的功能,以使非en-us用户感觉更有家的功能(例如,jquery-globalize和bootstrap-datapicker)。

旧学校实现这一目标的方式如下(其中'en-AU'即时确定,有时导致404文化遗失):

<script type="text/javascript" src="/js/globalize/globalize.js"></script>
<script type="text/javascript" src="/js/globalize/cultures/globalize.culture.en-AU.js"></script>

是否有推荐的方法用requirejs实现这一点(请注意,globalize是作为垫片包含的)?

这是我的第一次尝试,还不确定requirejs optomizer将如何处理它......

Globalize = require("globalize");
...
locale = module.config().locale;
if (locale != null) {
  require(["globalize/globalize.culture." + locale], function() {
    logger.debug("Loaded locale '" + locale + "'");
    Globalize.culture(locale);
  }, function() {
    logger.debug("Unable to load locale '" + locale + "'");
  });
}

编辑:优化器处理得很好,但解决方案并不真正起作用,因为文化文件是异步加载的,应用程序在设置文化之前使用了Globalize。

1 个答案:

答案 0 :(得分:0)

Kendo在他们的代码中做了类似的事情。

这是对他们技术的略微修改。这种特殊的样式允许模块通过require或直接脚本加载来加载。

我稍微修改了它以设置先决条件。在缺点方面,此代码不再通过r.js优化器工作。

var myLocalPrereqs = ['file_english.min'];

("function" == typeof define && define.amd ? define : function (preReqs, func) {
    return func()
})(myLocalPrereqs, function () {
    (function () {
      // Your module code goes here...
    })()
});