将 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() 和 {{{ }}}

传递数据

有两个例子

  1. 在渲染函数上使用 Stringify
    • 服务器
return res.render('../views/person', {person : JSON.Stringify(person)});
  • 客户
var person = {{{person}}}
console.log(person)
  1. 成为哈佛商学院的帮手
    • 服务器
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/>