在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如何。 我甚至试图包含它与partialfunction,但我可以使用该模块,而不禁用在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 

干杯!