【发布时间】:2013-12-11 05:11:23
【问题描述】:
我正在尝试弄清楚如何做到这一点。
问题:我正在尝试为我的电子邮件活动编译一个翡翠模板,但我正在尝试编译的文件是一个包含一些部分的 mixin。
例如:
控制器/user.js:
var emailTemplate = jade.compile(fs.readFileSync('./views/emails/new_user.jade', 'utf8'), { filename: './views/emails/new_user.jade'});
var template = emailTemplate({
baseUrl: res.locals.baseUrl,
confirmCode: user.confirmCode,
siteLogo: config.siteLogo,
name: user.username,
email: user.email
});
./views/emails/new_user.jade:
include ../mixins/emails
div(style='margin-bottom: 20px; border: 1px solid #ddd; padding: 20px; width: 50%; margin: 0 auto 20px;')
div(style='text-align: center; border-bottom: 1px solid #EEE; padding-bottom: 10px;')
img(src='#{siteLogo}', style='text-align: center;')
p
| Hi #{name},
p
| Please confirm your account
div(style='background-color: #179159; border-bottom: 1px solid #16814F; display: block; float: left; margin-bottom: 20px; text-align: center; width: 100%;')
mixin button('test')
./views/emails/mixins/emails.jade:
mixin button(text)
button
=text
不幸的是,jade.compile 中的 renderFile 似乎一次只打开一个。
https://github.com/visionmedia/jade/blob/master/jade.js#L950
有没有一种方法可以让我做我想做的事(打开 new_user.jade,其中包含 mixins)或者我必须做类似的事情:
- 修改 renderFile 源并将其更改为接受数组
- 对文件执行 fs.readFileSync()
- 解析顶部的每一行,检查
include - 然后打开每个文件
- 将它们合并到一个 .jade 文件中
还是有些疯狂?
【问题讨论】:
标签: javascript node.js express pug