替代动态包括在玉

时间:2014-01-31 17:33:37

标签: templates dynamic express include pug

使用express + jade尝试使用动态包含的替代解决方案是什么?以下是我正在尝试使用以下设置:

  • 路由
    • index.js
    • widgets.js
  • 的观点
    • 窗口小部件
      • widget1.jade
    • index.jade
    • widget.jade
  • app.js

在app.js中,我指定以下路线:

app.get('/widgets/:widget', widgets.widgets);

在我的小部件路线中,widgets.js我有:

exports.widgets = function(req, res){res.render('widgets/' + req.params.widget);};

这使我能够通过浏览/ widgets / widget1自行查看窗口小部件。这非常有效。我还可以在另一个视图中包含一个小部件,如

include widgets/widget1

这也很有用。但是,我现在想添加widget2,我想有时显示widget1,有时在另一个页面中显示widget2。我原本希望将一个variableWidgetName传递给视图,然后像这样引用它:

include widgets/#{variableWidgetName}

这失败了。当我尝试访问页面时,我收到500错误,指出没有这样的文件或目录视图\ widgets#{variableWidgetName} .jade存在。显然我不能引用包含变量。

我还有其他选择。如果这是Jade的限制,我应该采用不同的方法吗?我曾想过通过ajax加载小部件,但希望使用jade或express更好的解决方案。

有谁知道更好的方法吗?

1 个答案:

答案 0 :(得分:0)

尝试使用partial代替包含。

这对我有用(我使用harpjs.com与玉,使用“玉”:“0.35.0”):

- var name = "something" != partial('./'+name+'/hello.md')`