我正在使用jade来创建电子邮件模板,所以我为每种类型的电子邮件和每种语言都有一个玉文件。我希望能够从jade模板中设置电子邮件主题,它可以是通过读取模板内定义的变量,也可以通过查找title标签的内容,但我不能做任何一个。有没有办法将html标签绑定到一个函数,以便我可以得到它的内容?或者只是能够访问jade模板中定义的变量?
谢谢!
答案 0 :(得分:1)
这就是我所做的。
首先,我扩展了jade.Compiler以创建我自己的编译器,重写visitTag方法,以便能够在使用title标签时捕获。
subjects = {}
EmailCompiler = (node, options) ->
jade.Compiler.call(this, node, options)
EmailCompiler::__proto__ = jade.Compiler.prototype;
EmailCompiler::visitTag = (tag) ->
if tag.name is 'title'
subjects[@options.filename] = @getText tag.block.nodes[0]
jade.Compiler.prototype.visitTag.call(this, tag)
EmailCompiler::getText = (nodes, glue='') ->
[].map.call(nodes.nodes, (node) -> node.val).join glue
然后像这样调用jade编译器:
fs.readFile filePath, (err, str) ->
jade.compile str,
compiler: EmailCompiler
filename: filePath
希望它有所帮助!