簡體   English   中英

在express.node.js中鏈接玉器渲染

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM