将把手变量传递给客户端js文件

时间:2016-01-25 16:16:06

标签: javascript node.js handlebars.js

我正在使用node.js + express + handlebars构建应用程序,并且正在寻找一种方法,我可以将把手数据从服务器传递到客户端javascript文件。例如:

ExecutorService executor = Executors.newFixedThreadPool(15); for (int i=0;i<=15;i++) { Runnable worker = new Runnable() { public void run() { doStep1(); doStep2(); doStep3(); ... } }; executor.execute(worker); } executor.shutdown();

//server.js

我希望能够在客户端使用person对象,例如:

var person = { name: George, age: 32, } res.render('../views/person', person)

//client.js

有人可以帮忙吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

试试这个

 res.render('../views/person', {person: person})

答案 1 :(得分:1)

如果您传递的不仅仅是一些对象,我建议您使用Express的路由(http://expressjs.com/en/guide/routing.html)围绕客户端 - 服务器关系构建某种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
})

答案 2 :(得分:0)

您可以使用JSON.Stringify()和{{{}}}

传递数据

有两个例子

  1. 在渲染函数上使用Stringify
    • 服务器
return res.render('../views/person', {person : JSON.Stringify(person)});
  • 客户
var person = {{{person}}}
console.log(person)
  1. 制作HBS助手
    • 服务器
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。

答案 3 :(得分:0)

你在服务器中的路由可能是这样的

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/>