动态js包含requirejs

时间:2013-11-07 16:55:43

标签: dynamic requirejs jquery-ui-datepicker

我正在开发使用requirejsJQuery.datepicker小部件的单页应用程序。 我的网站使用多种语言,我想根据语言设置格式化日历,但我不希望每次都包含所有日期选择器的本地化文件。

如何根据.../jquery.ui.datepicker-_lg_.js变量在运行时管理正确的本地化_lg_包含?

1 个答案:

答案 0 :(得分:0)

您始终可以require()正确的语言文件,例如在应用程序初始化代码中:

define(..., function(...) {
    var lang = ...
    require("lib/jquery-ui/jquery.ui.datepicker-" + lang, function() {
        // code here will run after the localization file has loaded
    });
    ...
});

如果您可以并且不介意在index.html页面中添加一些动态内容,并且语言首选项可用于服务器端,您甚至可以执行以下操作:

  • 将配置文件与主AMD模块分开。
  • 使用var require = ...格式作为配置文件,而不是require.config({...})格式。
  • 假设有一个服务器端变量lang,它保存语言选择。在index.html中包含脚本(显示类似JSP的语法,根据您的情况进行调整):

    <script src="scripts/require-config.js"></script>
    <script>
        require.deps = require.deps || [];
        require.deps.push("lib/jquery-ui/jquery.ui.datepicker-<%= lang %>");
    </script>
    <script src="scripts/lib/require.js" data-main="..."></script>
    

这使用一些服务器端代码来操作require配置,以便在定义require后立即加载本地化。 sam原则可与pathshim / deps一起使用。