问题描述
您好,首先感谢您对我在stackoverflow中遇到的第一个问题的帮助。
我的要求是“如何在pug文件中的脚本上使用render的第二个参数'locals'”。
在index.js中...
router.get('/',function(req,res,next) {
Movie.find({}).then((movies)=>{
res.render('index',{movies:movies});
}).catch((err)=>{
console.log(err);
});
};
在index.pug ...
extends layout
block content
ul
each movie in movies
li
a(href='/edit/'+movie._id) #{movie.title}
script(type='text/javascript').
console.log(movie)
并且console.log输出是“未捕获的参考错误:电影没有被反抗”。
在“ a(href ='/ edit /'+ movie._id)#{movie.title}”上,电影正在播放,但是, 在“ console.log(电影)”上不是。
我认为范围无关紧要,声明也没有问题。
什么问题?以及如何在pug文件中的脚本上使用本地人?
再说一次,非常感谢您的帮助!
解决方法
当然,它是未定义的。了解发生了什么事:
-
Pug正在呈现HTML文件。意思是,这是一个模板,您可以在其中填充值。 Pug将“烘焙”所有这些并输出HTML文件。好。
-
此文件包含一行代码,文字为
console.log(movie)
。很好。 -
现在,此HTML文件被发送到浏览器,在此进行解析,并执行代码。 浏览器开始执行代码,看到
console.log(movie)
并说“movie
到底是什么?”崩溃:movie is undefined
。
这是服务器端和客户端环境之间的区别。您的文件是在服务器上创建的,但是在浏览器中执行,浏览器是在完全不同的计算机上完全不同的环境。 movie
在那里没有定义。