从字符串表达渲染模板

时间:2014-08-27 17:58:58

标签: node.js express dust.js

当我的网站上发出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发送到响应,但通过这样做,我无法包含灰尘参数。

2 个答案:

答案 0 :(得分:3)

您可以使用:

res.send(templateStr);

关于让灰尘填充模板中的params,你必须在使用res.send之前编译并渲染它

答案 1 :(得分:0)

我写了一个npm module来做到这一点,通过扩展快速框架来从视图模型中读取模板URL以及在哪里注入视图内容的css选择器。

您正常调用res.render但是传递模板网址和选择器而不是布局

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

它会在再次调用以获取下一个版本之前将模板缓存30分钟。