Javascript 将handlebar变量传递给客户端js文件
我正在使用node.js+express+handlebar构建一个应用程序,并正在寻找一种将handlebar数据从服务器传递到客户端javascript文件的方法。例如: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); 我希望能够在客户端
//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()和{{{}传递数据 有两个例子
- 服务器
- 客户
- 服务器
- 客户
它可以在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/>