如何在 pug 文件中的脚本上使用渲染的第二个参数 'locals'?

how to use render's second parameter 'locals' on script in pug file?

你好首先感谢你对我在Whosebug的第一个问题的帮助。

我的问题是“如何在 pug 文件中的脚本上使用渲染的第二个参数 '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 正在渲染一个 HTML 文件。意思是,它是一个模板,您可以用值填充它。 Pug 将“烘焙”所有这些并输出一个 HTML 文件。好

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

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

这是服务器端和客户端环境的区别。您的文件是在服务器上创建的,但在浏览器中执行,这是在完全不同的机器上的完全不同的环境。那里不可能定义 movie