这段代码的哪一部分是jade模板元素,哪些是JavaScript元素?

时间:2011-11-29 15:31:52

标签: javascript pug

我的理解是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 :(得分:0)

The Jade-Lang Readme有一个代码部分详细介绍了什么是客户端javascript。

基本上,如果您在模板中使用代码,并且它不在脚本标记内,它将在将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>"

但Jade在将结果发送到浏览器之前解析并呈现结果。