此代码的哪一部分是Jade模板元素,哪些是JavaScript元素?
-
25-10-2019 - |
题
我了解的是,玉模板引擎具有其自己的模板元素,并且还支持一些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在将结果发送到浏览器之前,解析了结果。
不隶属于 StackOverflow