【发布时间】:2014-04-17 13:37:30
【问题描述】:
希望我没有在这里重复一个问题,但我环顾四周并没有看到任何解决这个特定问题的东西。
我正在通过创建一组存储在文件夹中的独特内容块来构建一些页面 - 如下所示:
h4 Content Example
p.description.
Lorem ipsum dolor sample text etc etc
例如,pages\contentBlocks\Example\contentExample.jade。
这些内容块被添加到一个 mixin (pages\mixins.jade) 中,如下所示:
mixin contentBlock(title)
.content-block(id=title.toLowerCase())
h3 #{title}
if block
.content
block
我在一个更大的页面 (pages\portfolio.jade) 中调用这个 mixin,如下所示:
.subsection
//- Expects a list of objects of the format { title, html }
each val in pageBlocks
+contentBlock(val.title)
!= val.html
(目的是稍后通过其他变量来增强这一点,这些变量可以传递到 mixin 中以进行就地格式化,例如背景图像)
我想利用 Express 的功能在一次调用中自动呈现目录中的所有页面。像这样(index.js):
var pageBlocks = [];
res.render('pages/contentBlocks/Example/*', function (err, html) {
if (err) throw err;
pageBlocks.push({ html: html });
});
但是,我还希望能够引用文件的标题,例如设置我放入的块的class。理想情况下,它看起来像这样:
res.render('pages/contentBlocks/Example/*', function (err, html) {
if (err) throw err;
pageBlocks.push({ title:functionToGetFileName(), html: html });
});
有什么方法可以在不手动遍历该目录中的文件的情况下做到这一点?
或者,因为这个方法看起来不必要的复杂(考虑到 mixins、includes、extends 和 partials 的存在,感觉我应该能够在没有额外的渲染调用的情况下做到这一点),有没有更好的方法来做到这一点?
编辑:我做了更多的环顾和代码测试,现在我不确定。 可以 Express 隐式渲染一个目录中的所有文件吗?基于this question,我认为它可以,但我可能误读了。 res.render('path/to/directory/', callback) 的格式似乎不起作用 - 我收到以下错误:
Error: Failed to lookup view "path/to/directory/" in views directory "/path/to/app/views"
【问题讨论】:
标签: node.js express pug modular