如何在渲染视图时将变量传递给Node.js中的脚本标记
How can I pass variable when render view to script tag in Node.js
我将hbs与html一起用作模板引擎。这是我的背景。
app.set('view engine', 'html');
app.engine('html', hbs.__express);
在我的路线.js
router.get('/home', isAuthenticated, function(req, res){
res.render('home', {
user: data something });
});
在我的home.html中,我不想使用用户变量作为模板,而是想做一些
<script>
var user = {{user}}; // It don't recognize user variable
/* do something about user variable */
</script>
扩展ting-y的答案。
如果user
是数字或布尔值:
var user = {{user}};
如果user
是字符串:
var user = "{{user}}";
如果用户是一个对象或数组,请将其转换为url编码的JSON字符串并使用:
var user = JSON.parse(decodeURI("{{user}}");
标准方法
我喜欢使用handlbars 呈现javascript变量的这种更干净的方法
json_utils.js
function tryParseJSON (jsonString){
try {
var o = JSON.parse(jsonString);
if (o && typeof o === "object") {
return o;
}
}
catch (e) { }
return null;
}
module.exports.safeJSONParse =tryParseJSON;
module.exports.encodeJSON = function(obj) {
obj = JSON.stringify(obj);
return encodeURI(obj);
};
module.exports.decodeJSON = function(obj) {
obj = decodeURI(obj);
console.log(obj);
return tryParseJSON(obj);
};
app.js
var express = require("express"),
jsonUtils = require("./json_utils");
var app = express();
app.get("/",function(req,res) {
var data = {
"name" : "John Doe",
"age" : 18,
"isAlive" : false,
"emergencyContacts" : [999999999,888888888,777777777]
};
res.render("home",{ "data" : jsonUtils.encodeJSON(data)});
});
主页.handlebars
<script src="/utils_json_client.js"></script>
<script>
var data = jsonDecode("{{data}}");
console.log(data);
// {
// "name" : "John Doe",
// "age" : 18,
// "isAlive" : false,
// "emergencyContacts" : [999999999,888888888,777777777]
//}
<script>
尝试var user = "{{user}}";
如果您的用户只包含字符串
您使用的是Handlebars渲染引擎,正确的语法是{{@user}}
更多信息
用引号将它们括起来,将这些值强制转换为javascript 中的变量
<script>
var user = "{{@user}}";
</script>
如果变量是对象,则应该这样使用。如果只键入var={{user}},则会出现错误。
但如果它是一个对象,则必须使用[]进行初始化。
var user = ['{{user}}'];
相关文章:
- 在索引.html和应用.js [node.js] 之间共享变量
- JS(node.js)而循环不起作用
- 如何使用 JS (Node.js) 防止 HTTP 查询中允许使用 UTF8 字符串
- Angular JS & Node Webkit Routing
- 当作为脚本运行时.js Node中“this”的上下文是什么
- JS/Node:- 使用 node.io 选择标记
- JavaScript 如何让节点在返回 node.js/Node-RED 之前等待
- 处理快速连续的函数调用 - Javascript / underscore.js / node.js
- 如何在一台服务器中运行不同的.js文件.js NODE JS中的文件
- JS node-mysql bools 表现得很奇怪
- Node.js+Node Webkit+基于Node串行端口的应用程序-这可能吗
- 如何在Express.js/Node.js中检查查询字符串是否有值
- Express.Js, Node.Js, MongoDB Questions
- 在JS/Node中,当多个人编辑相同的记录时,如何避免数据冲突?有图案吗
- 服务器端js(node.js)上的同步
- 将参数从jade发送到js/node
- angular.js+node.js/electron中的Promise;不起作用
- 是否有可能确定我的应用程序的aws实例使用js/node aws-sdk
- Image Magick模块抛出奇怪的错误(Express js Node js)
- 用JS (Node.js)读取文本文件'