提供组合的JavaScript文件

时间:2012-07-18 20:25:37

标签: node.js

在html中:

<script type="text/javascript" src="/layout/load_scripts?jquery.validate.min.js,jquery-1.5.1.min.js,jquery-ui-1.8.11.min.js,jquery.unobtrusive-ajax.min.js,jquery.validate.unobtrusive.min.js"></script>

在服务器上:

load_scripts: function (context) {
    var combined_script = '';
    var script_names = context.parameters.split(',');
    for (var i = 0; i < script_names.length; i++) {
        combined_script += fs.readFileSync('./content/scripts/global/' + script_names[i]);
    }

    context.response.writeHead(200, { 'Content-Type': 'application/javascript' });
    context.response.end(combined_script);
}

但是脚本没有加载。请帮忙

2 个答案:

答案 0 :(得分:1)

乍一看,我这样调试:

  1. 写一些静态文本并尝试打印。
  2. 确认fs.readFileSync()实际上正在读取文件...(打印到控制台应该有效)
  3. 而且,看起来你不会在任何地方返回组合脚本。

答案 1 :(得分:1)

为什么要将readFileSync用于类似的东西?您可以同时读取所有文件。我可能会用异步库来解决这个问题,并且有更多功能方法。

async.map(['file1','file2','file3'], fs.readFile, function(err, results){
   results.join(''); // This is your string.
});

有关Async GitHub page的更多信息。