【问题标题】:How to pass node variable to external javascript?如何将节点变量传递给外部javascript?
【发布时间】:2014-06-17 15:49:57
【问题描述】:

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

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 中使用变量线。请有任何建议。

【问题讨论】:

  • 你可以找到答案here
  • 很抱歉,如何将此变量传递给外部 javascript?
  • 首先你通过EJS模板引擎将它传递给html文件(你可以在上面的链接中找到详细的解释)。然后你可以把它放在textarea JSON 格式。它可能看起来像这样:<textarea id="cord"><%=JSON.stringify(cord)%></textarea>。最后,您在客户端 javascript 上检索。使用 jQuery 很简单:var cord = $.parseJSON($('#cord').val());
  • 别忘了用display:none隐藏这个textarea
  • @Zub 请考虑写一个答案,以便它可以被接受并将问题标记为已解决。

标签: javascript html node.js redis


【解决方案1】:

要将变量从节点传递到 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 并不是 node 的唯一模板引擎。也可以考虑Jade
这是一个(有点过时的)list of other template engines。选择你喜欢的:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多