如何在pug文件中的脚本上使用render的第二个参数“ locals”?

问题描述

您好,首先感谢您对我在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在那里没有定义。