[英]Chaining jade renders, in node.js with express
我想使用Jade渲染多个部分,并且在这之间需要一些脚本。 我首先尝试一些简单的事情:
// con is a mysql connection, res is a express render target
function main_page_jade(con, res)
{
con.query('SELECT * FROM ' + 'pg_user' , function(err,rows,fields) {
res.render( 'table.jade', {rows:rows, fields:fields, title:'DB User'} );
con.query('SELECT * FROM ' + 'pg_comp' , function(err,rows,fields) {
res.render( 'table.jade', {rows:rows, fields:fields, title:'DB Comp'} );
});
});
}
这根本行不通,所以我在Google上搜索了一下,建议似乎
令人费解的(实际上是意大利面)。 我对node / js / jade很陌生(例如10天新),
可能有点C ++的偏见(例如20yr的偏见),所以我的问题是;
如何在节点中以能够导致良好设计的方式组成项目
尝试这样的事情:
function main_page_jade(con, res) {
var data = [];
con.query('SELECT * FROM ' + 'pg_user' , function(err,rows,fields) {
data.push({rows:rows, fields:fields, title:'DB User'});
con.query('SELECT * FROM ' + 'pg_comp' , function(err,rows,fields) {
data.push({rows:rows, fields:fields, title:'DB Comp'});
res.render('index', {data: data});
});
});
}
在您的翡翠模板中:
each val in data
//- Your current template
@no_joke的答案是完美的。 为该答案添加一些解释:您仅 render
一次 。 预先组合所有数据,然后将其传递到模板。 对于“意大利面条”代码(我认为如果您指的是回调地狱 ),那么promise或ES7的async-await就是您的答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.