Javascript 如何使用渲染';s第二个参数';当地人';关于pug文件中的脚本?

Javascript 如何使用渲染';s第二个参数';当地人';关于pug文件中的脚本?,javascript,pug,Javascript,Pug,您好首先感谢您对我在stackoverflow中的第一个问题的帮助 我的任务是“如何在pug文件中的脚本上使用渲染的第二个参数‘locals’” 在index.js中 router.get('/', function(req, res, next) { Movie.find({}).then((movies)=>{ res.render('index', {movies:movies}); }).catch((err)=>{ console.log(err)

您好首先感谢您对我在stackoverflow中的第一个问题的帮助

我的任务是“如何在pug文件中的脚本上使用渲染的第二个参数‘locals’”

在index.js中

router.get('/', function(req, res, next) {

  Movie.find({}).then((movies)=>{
    res.render('index', {movies:movies});
  }).catch((err)=>{
    console.log(err);
  });
};
在索引中。帕格

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输出为“uncatched reference error:movie not defined”

在“a(href='/edit/'+movie.\u id){movie.title}”上,电影正在运行,但是, 在“console.log(movie)”上,它不是

我认为范围不重要,声明也没有问题

问题是什么?如何在pug文件中使用脚本上的局部变量


再一次,非常感谢你的帮助

当然没有定义。了解正在发生的事情:

  • 帕格正在呈现一个HTML文件。也就是说,它是一个模板,你用值填充它。帕格将“烘焙”所有这些并输出一个HTML文件。好

  • 此文件包含一行代码,作为文本:
    console.log(movie)
    。很好

  • 现在,这个HTML文件被发送到浏览器,在那里它被解析,并执行代码。 浏览器开始执行代码,看到
    console.log(movie)
    并说“到底是什么
    movie
    ?”崩溃:
    movie未定义


这就是服务器端环境和客户端环境之间的区别。您的文件是在服务器上创建的,但在浏览器中执行,在一台完全不同的机器上,在一个完全不同的环境中执行。这里没有定义电影的方法。

你的答案是多么容易理解啊。非常感谢你的帮助。我不完全了解前方的环境,试图在错误的地方寻找原因。非常感谢。