在Express上使用外部模块进行Jade模板inheritance的一个很好的策略
我正在开发一个框架,开发人员可以在外部模块中实现一个子模板。 我想稍后将该模板包含在父模板中。
这是一个基本的模板模式:
─使命(母模板)
├─接替任务(小孩模板)
├─失败的任务(儿童模板)
└─玩任务(儿童模板)
父模板对每个人都是一样的。 子模板由贡献者实现,并始终显示在不同的时刻(任务状态)。
我在一个模板文件中尝试两种方法。
实施“块”模式:
block mission_play h2 Hello world! p Lorem ipsum dolor sit amet, consectetuer adipiscing elit. block mission_succeed h2 Congratulations! p You won buddy! block mission_failed h2 Oh my gosh, dude, you did something realy bad p You should try again
这一个不会工作,因为我没有任何extend layout
指令(我不能使用,因为每个子模板是一个外部模块)。 有什么办法可以手动指示玉哪个模板扩展?
在mixin中实现每个子模板:
mixin mission_introduction(mission) h2 Hello world! p Lorem ipsum dolor sit amet, consectetuer adipiscing elit. mixin mission_succeed(mission) h2 Congratulations! p You win buddy! mixin mission_failed(mission) h2 Oh my gosh dude, you did something realy bad p You should try again
我打算在其父项中包含该模板,但Jade不允许在包含path中使用expression式。 这就是为什么我试图直接在父玉模板中解释玉代码,但我没有find如何。 我甚至试图包含它与partial
function,但我可以使用该模块,而不禁用在Express中的默认视图inheritance策略。
那我哪里错了? build筑之王的最佳策略是什么?
干杯!
我最终find了一个好策略:
case mission.state when "game" block mission_introduction h2 Hello world! p Lorem ipsum dolor sit amet, consectetuer adipiscing elit. when "succeed" block mission_succeed h2 Congratulations! p You win buddy! when "failed" block mission_failed h2 Oh my gosh dude, you did something realy bad p You should try again
干杯!