2014-08-27 197 views
2

當我的網站發出GET請求時,我試圖呈現存儲在另一臺服務器上的模板。本質上,我的應用程序將向此服務器發出請求,並且響應將包含我想要使用的模板。服務器的響應是一個字符串形式的灰塵模板。從字符串快速渲染模板

渲染模板的最佳方式是什麼?

router.get('/', function(req, res) { 
    var options = { 
    host: myHost, 
    path: myPath, 
    port: myPort}; 

    var templateReq = http.get(options, function(response) { 
     var templateStr = ''; 

     response.on('data', function(chunk) { 
     templateStr += chunk; 
     }); 

     response.on('end', function() { 
     var dustParams = myDustParams; 
     res.render(templateStr, dustParams); //THIS DOES NOT WORK 
     }); 
    }); 
}); 

據我所知,渲染看起來在'views'文件夾中搜索模板。

此外,我知道你可以直接發送HTML到使用'發送'的響應,但通過這樣做,我無法包含灰塵參數。

回答

3

您可以使用:

res.send(templateStr); 

關於具有防塵填充PARAMS模板,你必須編譯和使用res.send

+1

謝謝!我忘記了Dust手動編譯和渲染模板的能力。我會研究這一點。 – erik 2014-08-27 18:57:41

0

我寫了一個npm module做到這一點通過擴展之前使其表達框架從視圖模型中讀取一個模板url以及在哪裏注入視圖內容的css選擇器。

你叫正常res.render但通過模板URL和選擇,而不是佈局

res.render('view-name', { 
    template: 'https://courseof.life/johndoherty', // external url 
    templateSelector: '#promo-banner' // element within layout to inject view 
}); 

它撥打另一個電話獲取下一個版本之前緩存30分鐘的模板。