Какая часть этого кода является элементом нефритового шаблона, а какие элементы JavaScript?

StackOverflow https://stackoverflow.com/questions/8313423

  •  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>"

Но Джейд -анализ и передает результаты до того, как он будет отправлен в браузер.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top