#javascript #pug
#javascript #pug
Вопрос:
привет, сначала спасибо за вашу помощь на мой первый вопрос в stackoverflow.
мой вопрос: «как использовать второй параметр рендеринга ‘locals’ для скрипта в файле pug».
в 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)
и консоль.вывод журнала — «ошибка неучтенной ссылки: фильм не определен».
на «a (href = ‘/ edit/’ movie._id) #{movie.title}» фильм работает, но на «console.log (movie)» это не так.
я думаю, что область действия не имеет значения, и объявление также не проблема.
в чем проблема? и как я могу использовать локальные файлы для скрипта в файле pug?
еще раз, большое спасибо за вашу помощь!!
Ответ №1:
Конечно, это не определено. Понять, что происходит :
-
Pug рендерит HTML-файл. Это означает, что это шаблон, который вы заполняете значениями. Pug собирается «испечь» все это и вывести HTML-файл. Хорошо.
-
Этот файл содержит строку кода в виде текста :
console.log(movie)
. Очень хорошо. -
Теперь этот HTML-файл отправляется в браузер, где он анализируется, и выполняется код. Браузер начинает выполнение кода, видит
console.log(movie)
и говорит: «Что, чертmovie
возьми, такое?» Сбой :movie is undefined
.
В этом разница между серверной и клиентской средами. Ваш файл создается на сервере, но выполняется в браузере, в совершенно другой среде на совершенно другой машине. Там нет способа movie
определить.
Комментарии:
1. какой простой для понимания ваш ответ. действительно спасибо за вашу помощь. я не совсем понял внешнюю среду и пытаюсь искать причину не в том месте. Спасибо!!