我正在使用hbs作为模板引擎和html。 这是我的设置。
app.set('view engine', 'html');
app.engine('html', hbs.__express);
在我的route.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>
答案 0 :(得分:5)
扩展 ting-y 的答案。
如果user
是数字或布尔值:
var user = {{user}};
如果user
是字符串:
var user = "{{user}}";
如果user是对象或数组,请将其转换为urlencoded JSON字符串并使用:
var user = JSON.parse(decodeURI("{{user}}");
我喜欢这种使用handlbars渲染javascript变量的更简洁的方法
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);
};
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)});
});
<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>
答案 1 :(得分:1)
尝试font-size: 0
如果您的用户只包含字符串
答案 2 :(得分:0)
您正在使用Handlebars渲染引擎,正确的语法为{{@user}}
more info
用引号将它们包围起来,将这些值转换为javascript中的变量
<script>
var user = "{{@user}}";
</script>
答案 3 :(得分:0)
如果变量是一个对象,则应该这样使用。如果您只输入var = {{{user}},则将输入一个错误。如果输入var user ='{{user}}',则将是一个字符串。
但是,如果它是一个对象,则必须使用[]进行初始化。
var user = ['{{user}}'];