1

私は、開発者が外部モジュールに子テンプレートを実装できるフレームワークに取り組んでいます。後でそのテンプレートを親テンプレートに含めたいと思います。

基本的なテンプレート スキーマは次のとおりです。

─ ミッション (親テンプレート)
├─ 成功したミッション (子テンプレート)
├─ 失敗したミッション (子テンプレート)
└─ プレイ ミッション (子テンプレート)

親テンプレートは誰にとっても同じです。子テンプレートは貢献者によって実装され、常に別の瞬間 (ミッション状態) に表示されます。

1 つのテンプレート ファイルで 2 つのアプローチを試します。

「ブロック」パターンを実装します。

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(すべての子テンプレートが外部モジュールであるため使用できません)。どのテンプレートを拡張するかを手動で jade に示す方法はありますか?

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 テンプレートで 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 に答える