Javascript requirejs-当需要使用服务器生成的值进行初始化时,如何构造应用程序

Javascript requirejs-当需要使用服务器生成的值进行初始化时,如何构造应用程序,javascript,requirejs,amd,commonjs,Javascript,Requirejs,Amd,Commonjs,如果某些模块需要在页面中动态生成init数据,我对如何构造基于RequireJS的项目的最佳方法感兴趣 为了澄清我的问题,我需要在主html页面的某个地方有如下内容: /* Following lines generated on server side so need to be in the html page*/ var initDataForModule1= [ data, generated, by, server]; var initDataForModule1= [ some, o

如果某些模块需要在页面中动态生成init数据,我对如何构造基于RequireJS的项目的最佳方法感兴趣

为了澄清我的问题,我需要在主html页面的某个地方有如下内容:

/* Following lines generated on server side so need to be in the html page*/
var initDataForModule1= [ data, generated, by, server];
var initDataForModule1= [ some, other, data, generated, by, server];
然后,我会有一些代码,需要这些数据来完全设置UI(不一定要加载)。例如,它们需要包含以下内容:

for(var i=0;i<initDataForModule1.length;i++)
     generateUIElementWithData(initDataForModule1[i]);
<script src="/js/lib/require.js"></script>
<script>
    var initDataForModule1= [ data, generated, by, server];
    var initDataForModule1= [ some, other, data, generated, by, server];

    require(['module1'], function(module1){
       module1.initWithData(initDataForModule1);
    });

    ...
<script>

for(var i=0;i从服务器端呈现JavaScript是自找麻烦的:混合语言几乎不可能重构,因为最终会在JS文件中使用模板标记(这也会在验证/linting期间标记)。它还会耦合前端和后端代码,从而降低项目的可移植性


我决定使用,它在运行时进行AJAX调用并读取配置(您需要记住在r.js buildconfig文件中将
inlineext
设置为
false
),例如:

require(['main','someDep','text.../ajax/config'],
函数(应用程序、someDep、configString){
App.start(dep,JSON.parse(configString);
});
其中,
。/ajax/config“
是以JSON格式(*)提供配置的URL的路径


(*)还有一个问题,但我无法让它工作,而且“手动”解析JSON文本对我来说并不麻烦。

Hm……但这肯定有缺点。它增加了一些服务器复杂性(和一些Javascript复杂性)并增加您需要发出的请求数量。唯一需要包含模板标记的脚本是在HTML中呈现的短脚本,它只需要定义一些配置变量。关于混合语言,我还可以怎么做?我没有说我会在JS中放置模板标记,但在HTML文件中,所以我在主页中需要一些内联JS。我在服务器上计算了一些值,我需要向客户端显示它们,但它们需要一些JS来显示。什么可以是可选的?感谢配置方面的建议。但我仍然不知道如何避免混合语言或如何使其结构正确,所以有任何建议吗非常感谢,谢谢!