将 handlebars 变量传递给客户端 js 文件
Pass handlebars variable to client js file
我正在使用 node.js + express + handlebars 构建一个应用程序,并且一直在寻找一种方法可以将 handlebars 数据从服务器传递到客户端 javascript 文件。例如:
//server.js
var person = {
name: George,
age: 32,
}
res.render('../views/person', person)
我希望能够在客户端使用 person 对象,例如:
//client.js
console.log(person.age);
console.log(person.name);
有人可以帮忙吗?
谢谢!
试试这个
res.render('../views/person', {person: person})
如果您传递的不仅仅是几个对象,我建议您使用 Express 的路由 (http://expressjs.com/en/guide/routing.html)[=15] 围绕您的 client-server 关系构建某种 API =]
// server
app.get('/person/a', function (req, res, next) {
console.log('the response will be sent by the next function ...');
next();
}, function (req, res) {
res.send({person: {age: 30, name: "Bob", greeting: "hello"}});
});
然后您的客户将使用 http
模块 ( https://nodejs.org/api/http.html ) 调用这些路由:
// client
http.get({
hostname: 'localhost',
port: 80,
path: 'person/a',
}, (res) => {
// Do stuff with response
})
您可以使用 JSON.Stringify() 和 {{{ }}}
传递数据
有两个例子
- 在渲染函数上使用 Stringify
- 服务器
return res.render('../views/person', {person : JSON.Stringify(person)});
- 客户
var person = {{{person}}}
console.log(person)
- 成为哈佛商学院的帮手
- 服务器
hbs.hbs.registerHelper('convert', function (date) {
if (!date) {
return;
}
return JSON.stringify(date);
});
return res.render('../views/person', {person : person});
- 客户
var person = {{{convert person}}}
console.log(person)
我建议2号。
它可以在 HTML 和客户端 javascript.
上使用
你在服务器中的路由可能是这样的
app.get("/",(req,res)=>{
res.render("view_name",{val: 123,val2: "123"});
});
然后在你的视图文件中你可以这样做:
<script>
console.log({{val}}); // if value it's number type
console.log("{{val2}}");//in quotes if it's string type
const val1 = {{val}};
const val2 = "{{val1}}";
<script/>
我正在使用 node.js + express + handlebars 构建一个应用程序,并且一直在寻找一种方法可以将 handlebars 数据从服务器传递到客户端 javascript 文件。例如:
//server.js
var person = {
name: George,
age: 32,
}
res.render('../views/person', person)
我希望能够在客户端使用 person 对象,例如:
//client.js
console.log(person.age);
console.log(person.name);
有人可以帮忙吗?
谢谢!
试试这个
res.render('../views/person', {person: person})
如果您传递的不仅仅是几个对象,我建议您使用 Express 的路由 (http://expressjs.com/en/guide/routing.html)[=15] 围绕您的 client-server 关系构建某种 API =]
// server
app.get('/person/a', function (req, res, next) {
console.log('the response will be sent by the next function ...');
next();
}, function (req, res) {
res.send({person: {age: 30, name: "Bob", greeting: "hello"}});
});
然后您的客户将使用 http
模块 ( https://nodejs.org/api/http.html ) 调用这些路由:
// client
http.get({
hostname: 'localhost',
port: 80,
path: 'person/a',
}, (res) => {
// Do stuff with response
})
您可以使用 JSON.Stringify() 和 {{{ }}}
传递数据有两个例子
- 在渲染函数上使用 Stringify
- 服务器
return res.render('../views/person', {person : JSON.Stringify(person)});
- 客户
var person = {{{person}}}
console.log(person)
- 成为哈佛商学院的帮手
- 服务器
hbs.hbs.registerHelper('convert', function (date) {
if (!date) {
return;
}
return JSON.stringify(date);
});
return res.render('../views/person', {person : person});
- 客户
var person = {{{convert person}}}
console.log(person)
我建议2号。 它可以在 HTML 和客户端 javascript.
上使用你在服务器中的路由可能是这样的
app.get("/",(req,res)=>{
res.render("view_name",{val: 123,val2: "123"});
});
然后在你的视图文件中你可以这样做:
<script>
console.log({{val}}); // if value it's number type
console.log("{{val2}}");//in quotes if it's string type
const val1 = {{val}};
const val2 = "{{val1}}";
<script/>