Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将handlebar变量传递给客户端js文件_Javascript_Node.js_Handlebars.js - Fatal编程技术网

Javascript 将handlebar变量传递给客户端js文件

Javascript 将handlebar变量传递给客户端js文件,javascript,node.js,handlebars.js,Javascript,Node.js,Handlebars.js,我正在使用node.js+express+handlebar构建一个应用程序,并正在寻找一种将handlebar数据从服务器传递到客户端javascript文件的方法。例如: //server.js var person = { name: George, age: 32, } res.render('../views/person', person) console.log(person.age); console.log(person.name); 我希望能够在客户端

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

//server.js

var person = {
    name: George,
    age: 32, 
}

res.render('../views/person', person)
console.log(person.age);
console.log(person.name);
我希望能够在客户端使用person对象,例如:

//client.js

var person = {
    name: George,
    age: 32, 
}

res.render('../views/person', person)
console.log(person.age);
console.log(person.name);
有人能帮忙吗

谢谢

试试这个

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

如果传递的对象不止几个,我建议您使用Express的路由()围绕客户机-服务器关系构建某种API

然后,您的客户机将使用
http
模块()调用这些路由:


可以使用JSON.Stringify()和{{{}传递数据

有两个例子

  • 使用Stringify on render函数
    • 服务器
    • 客户
  • 使HBS成为助手
    • 服务器
    • 客户
    我建议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/>
    
    
    console.log({val}});//如果值是数字类型
    log(“{val2}”)//如果是字符串类型,则在引号中
    常数val1={val};
    const val2=“{val1}}”;
    
    谢谢-http.get({})是否在client.js文件中?是的。客户端正在向服务器上的特定位置发出“获取”http请求,该位置由Express提供服务。无论您提供什么服务,它都会在server.js文件中处理,如果您选择“localhost:8080/person/a”路径,甚至可以在浏览器中进行测试。同样,如果要向服务器发送数据,请让客户端发送“POST”http请求,并确保服务器接受到特定路由的POST请求,如“localhost:8080/send/person/”。只要看一看我提供的两个链接就知道如何实现这一点。如果你想在外部js文件中使用它,你需要在从js文件访问变量“person”之前定义它,或者在js文件中使用ajax检索它(如Kevin编写的等)。var person={{person};或者,如果您想在handlebar文件中使用它,请在脚本标记console.log(“{person.name}”)中编写console.log;哦,Handlebar会逃逸输出,但您可以这样修复它:我已经尝试了2号解决方案,但是当我的页面加载时,我得到了
    未捕获的语法错误:意外令牌'{'
    。此客户端javascript不理解三方括号。您是如何做到这一点的?三方括号只能在.hbs文件中使用。Matthew Wolman//您应该声明包含三方括号的javascript变量。并将该变量传递给javascript文件
    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)
    
    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/>