2017-01-12 10 views
1

私はnode.js、特にexpress.jsを使い始めています。expressを文字列をHTMLコードとして解釈する方法を教えてください。

私はできるだけD.R.Y.であることを前提として、体内に単一のHTML要素main.contentを持つindex.pugテンプレートを1つだけ持つことに決めました。実際のコンテンツは、<name>.pugファイルに格納されている抜粋に基づいてpug.renderFile()によって作成されます。

全体像は、このです:

SERVER.JS

response.render("index", { 
    content: pug.renderFile(excerpt("aboutus"), { 
     title: "About Us", 
     subtitle: "Some subtitle here", 
     article: "Some text here" 
    }) 
}); 

ABOUTUS.PUG

h1= title 
h3= subtitle 
article= article 

INDEX.PUG

//- html-head-body routine 
main.content= content 

問題は、pug.renderFile()返すHTML文字列の形式のコードと、代わりにmain.content要素内の三つの要素を得るための、私はこの要素の.innerHTMLとして、この正確な文字列を取得しています。

ここで私の間違いは何ですか?

+0

ここから抜粋していますか? –

答えて

1

これは恐ろしいことです。あなたは、拡張を使用する必要があります。 pugへの2回の呼び出しをしないでください。間違ったレイヤーにプレゼンテーションを焼き付けています。これは後であなたを刺すようになります。

言うまでもなく、HTMLを仲介文字列に変換して、最適化できない特別な関数呼び出しを行う必要があります。

SERVER.JS

response.render("aboutus", { 
    title: "About Us", 
    subtitle: "Some subtitle here", 
    article: "Some text here" 
}); 

ABOUTUS.PUG

extends index 

block content 
    h1= title 
    h3= subtitle 
    article= article 

INDEX.PUG

// html-head-body routine 
main.content= content 

これは意味があなたのシステムを拡張するために起こっているかを考えることはない場合。たとえば、ナビゲーションバー用の1つのpugファイル、フッター用のもの、ヘッダー用のものなどがあります。すべての文字列を一緒に文字列にして、すべての要求に応じてindex.pugに渡しますか?

  1. これは非常に多くの抗ドライです。
  2. これは遅くなります。
  3. メモリが大量に消費されます。
  4. これはメンテナンスの悪夢になります。

the conventionに従ってください。

+1

ええ、それは非常に便利です。どうもありがとうございました! –

関連する問題