我的理解是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
}
});
})
});
任何人都可以帮助我清除这种困惑吗?
答案 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在将结果发送到浏览器之前解析并呈现结果。