Какая часть этого кода является элементами шаблона Jade, а какие элементами JavaScript? - PullRequest
0 голосов
/ 29 ноября 2011

Что я понимаю, так это то, что движок шаблонов jade имеет свои собственные шаблоны и поддерживает также некоторый JavaScript.Но в следующем коде я не могу отличить, какой из них не является кодом 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
            }
        });
    })
});

Может кто-нибудь помочь мне устранить эту путаницу?

1 Ответ

0 голосов
/ 29 ноября 2011

Файл Jade-Lang Readme содержит раздел Code , в котором подробно рассказывается о том, что является и не является клиентским JavaScript.

В основном, если вы используете код внутри шаблона, а он не находится внутри тега скрипта, он будет отображать вывод этого javascript до того, как отправит его в браузер. Это все еще JavaScript, но он выполняется на стороне сервера. Любой javascript внутри тега script является обычным 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>"

Но Jade анализирует и отображает результаты перед отправкой в ​​браузер.

...