Какая часть этого кода является элементом нефритового шаблона, а какие элементы JavaScript?
-
25-10-2019 - |
Вопрос
Я понимаю, что у нефритового шаблонного двигателя есть свои собственные элементы шаблона, а также поддерживает некоторый JavaScript. Но в следующем коде я не могу различить, какой из них не является кодом не-джавазиписа (это Node.js + Express.js):
Это файл представления (index.jade):
h1= title
#articles
- each article in articles
div.article
div.created_at= article.created_at
div.title
a(href="/blog/"+article._id.toHexString())!= article.title
div.body= article.body
Это файл сервера (app.js):
app.get('/', function(req, res){
articleProvider.findAll( function(error,docs){
res.render('index.jade', { locals: {
title: 'Blog',
articles:docs
}
});
})
});
Кто -нибудь может помочь мне прояснить эту путаницу?
Решение
Нефрито-ланг Ридме имеет Код Раздел, который подробно рассказывает о том, что является JavaScript на стороне клиента.
По сути, если вы используете код внутри своего шаблона, и он не находится внутри тега сценария, он сделает вывод этого JavaScript, прежде чем отправить его в браузер. Это все еще JavaScript, но это выполненная сторона сервера. Любой JavaScript внутри тега скрипта является просто нормальным JavaScript и отправляется в браузер, как и все остальное.
Что касается примера, который вы разместили, строка:
- each article in articles
Переводится на:
for (var article in articles) {
/* Whatever else is going on in the template */
}
Также:
a(href="/blog/"+article._id.toHexString())!= article.title
Переводит (упрощено) на
"<a href=\"/blog\"" + article._id.toHexString() + ">" + /* Escaped article.title */ + "</a>"
Но Джейд -анализ и передает результаты до того, как он будет отправлен в браузер.