我想在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中使用变量线。任何建议请。
答案 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。选择你喜欢的那个:)