1

我正在开发一个框架,开发人员可以在其中在外部模块中实现子模板。我想稍后将该模板包含在父模板中。

这是一个基本的模板架构:

─ 任务(父模板)
├─ 成功任务(子模板)
​​├─ 失败任务(子模板)
​​└─ 玩任务(子模板)

每个人的父模板都是一样的。子模板由贡献者实现,并始终显示在不同的时刻(任务状态)。

我在一个模板文件中尝试了两种方法。

实现“块”模式:

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 不允许在包含路径中使用表达式。这就是为什么我尝试直接在父玉模板中解释玉代码但我没有找到如何。我什至尝试将它包含在partial函数中,但我可以使用该模块而不禁用 Express 中的默认视图继承策略。

那么我错在哪里?这位建筑之王的最佳策略是什么?

干杯!

4

1 回答 1

3

我终于找到了一个很好的策略:

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

干杯!

于 2012-08-29T12:45:10.753 回答