如何将节点变量传递给外部javascript?

时间:2014-05-01 06:27:13

标签: javascript html node.js redis

我想在html文件中使用node.js加载的节点变量。 这是我的代码。

var cord  = [ '37.772323,-122.214897','21.291982,-157.821856','-18.142599,178.431',
'-27.46758,153.027892' ]

fs.readFile('./map.html', function (err, html) {
    if (err) {
    throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(8000);
});

我想在map.html中使用变量线。任何建议请。

1 个答案:

答案 0 :(得分:2)

要将变量从节点传递给html,您应该编写自己的模板引擎,或使用第三方解决方案(如EJS)。

要安装EJS,请打开终端,转到所需目录,然后键入npm install ejs

您的服务器端代码可能如下所示:

var http = require('http');
var ejs = require('ejs');
var fs = require('fs');

var content = fs.readFileSync('./map.ejs', 'utf-8');
var compiled = ejs.compile(content);

var cord  = [ '37.772323,-122.214897','21.291982,-157.821856','-18.142599,178.431','-27.46758,153.027892' ]

http.createServer(function(request, response) {
    response.writeHead(200, {'Content-Type': 'text/html'});
    response.write(compiled({cord: cord}));
    response.end();
}).listen(8000);


以下是map.ejs

的示例
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(function() {
    var cord = $.parseJSON($('#cord').val());
    alert(cord);
});
</script>
</html>
<body>

    <textarea id="cord" style="display:none;"><%=JSON.stringify(cord)%></textarea>

</body>
</html>


在浏览器中打开http://localhost:8000后,您会看到显示cord数组的提醒。

有关EJS的更多信息,请参阅文档:
https://github.com/visionmedia/ejs
http://embeddedjs.com/

祝你好运!

修改

EJS不是节点的唯一模板引擎。还要考虑Jade 这是一个(有点过时的)list of other template engines。选择你喜欢的那个:)