我了解的是,玉模板引擎具有其自己的模板元素,并且还支持一些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
            }
        });
    })
});

谁能帮助我清除这种困惑?

有帮助吗?

解决方案

玉兰德姆 有个 代码 详细介绍什么是和不是客户端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在将结果发送到浏览器之前,解析了结果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top