Koajs-templating
Koa.js-テンプレート
パグはテンプレートエンジンです。 テンプレートエンジンは、サーバーコードがHTMLで乱雑になるのを防ぎ、文字列を既存のHTMLテンプレートに乱暴に連結するために使用されます。 Pugは非常に強力なテンプレートエンジンで、 filters、includes、inheritance、interpolation などのさまざまな機能を備えています。 これには多くの根拠があります。
KoaでPugを使用するには、次のコマンドを使用してインストールする必要があります。
パグをインストールしたら、アプリのテンプレートエンジンとして設定します。 app.jsファイルに次のコードを追加します。
次に、viewsという名前の新しいディレクトリを作成します。 ディレクトリ内で、first_view.pugという名前のファイルを作成し、次のデータを入力します。
このページを実行するには、アプリに次のルートを追加します。
あなたはとして出力を受け取るでしょう-
Pugが行うことは、この非常にシンプルなマークアップをHTMLに変換することです。 タグを閉じるのを追跡する必要はありません。クラスやidキーワードを使用する必要はなく、「。」を使用しますそして、それらを定義する「#」。 上記のコードは最初に変換されます
Pugは、HTMLマークアップを単純化するだけではありません。 Pugのこれらの機能のいくつかを見てみましょう。
シンプルなタグ
タグは、インデントに従ってネストされます。 上記の例のように、 <title> は <head> タグ内でインデントされているため、その中にありました。 ただし、 <body> タグは同じインデントにあるため、 <head> タグの兄弟でした。
タグを閉じる必要はありません。 Pugは、同じまたは外側のインデントレベルで次のタグに遭遇するとすぐに、タグを閉じます。
タグ内にテキストを配置する3つの方法があります-
- スペース区切り-
- パイプテキスト-
コメント
PugはJavaScript(//)と同じ構文を使用してコメントを作成します。 これらのコメントはhtmlコメントに変換されます(<!-comment→)。 例えば、
このコメントは次のように変換されます-
属性
属性を定義するには、属性のカンマ区切りリストを括弧で囲んで使用します。 クラスおよびID属性には特別な表現があります。 次のコード行は、特定のhtmlタグの属性、クラス、およびIDの定義をカバーしています。
このコード行は、に変換されます-
テンプレートに値を渡す
Pugテンプレートをレンダリングするとき、実際にルートハンドラーから値を渡すことができ、テンプレートで使用できます。 次のコードで新しいルートハンドラーを作成します。
次に、次のコードを使用して、viewsディレクトリにdynamic.pugという名前の新しいビューファイルを作成します。
ブラウザで localhost:3000/dynamic を開くと、以下が出力されます。 −
これらの渡された変数をテキスト内で使用することもできます。 渡された変数をタグのテキスト間に挿入するには、#\ {variableName}構文を使用します。 たとえば、上記の例でfinddevguidesからの挨拶を挿入する場合は、次のコードを使用する必要があります。
値を使用するこの方法は、補間と呼ばれます。
条件付き
条件ステートメントとループ構造も使用できます。 ユーザーがログインしている場合は「Hi、User」を表示し、そうでない場合は「ログイン/サインアップ」リンクを表示したいという実用的な例を考えてみましょう。 これを達成するために、次のような単純なテンプレートを定義できます-
ルートを使用してこれをレンダリングし、次のようなオブジェクトを渡す場合-
Hi、Ayushを表示するメッセージが表示されます。 ただし、オブジェクトを渡さない場合、またはユーザーキーを持たないオブジェクトを渡さない場合は、サインアップリンクを取得します。
含めるとコンポーネント
Pugは、Webページのコンポーネントを作成する非常に直感的な方法を提供します。 たとえば、ニュースWebサイトが表示された場合、ロゴとカテゴリのヘッダーは常に修正されます。 それをすべてのビューにコピーする代わりに、インクルードを使用できます。 次の例は、インクルードの使用方法を示しています-
次のコードで3つのビューを作成します-
header.pug
content.pug
このためのルートを次のように作成します。
Pugには他にも多くの機能があります。 ただし、これらはこのチュートリアルの範囲外です。 パグについては、http://jade-lang.com [Pug]でさらに詳しく調べることができます。