@yamato-daiwa/es-extensions(YDEE)との結合
@yamato-daiwa/frontendと言うnpmパッケージのルートディレクトリに在る Functionality.pugファイルを 含むと、@yamato-daiwa/es-extensions (略:「YDEE」)の1.7バージョンの全機能 (インターフェースやタイプアリアスの様にTypeScriptを JavaScriptへの変更の際存在しなく成る機能以外)が利用可能に成る。
include ../../node_modules/@yamato-daiwa/frontend/Functionality.pug
Functionality.pug
ファイルは既に含めてあり、
再び含む行為はエラーを発生させる。当機能が求められる主な場合は静的プレビュー 作成の段階での簡易なデータモキング。 例えば、下記の様にデータ(意味のない文字列でも此の段階では問題が無い)に満たされている16件のカードのマークアップを早く作成できます。
ul.ProductsList
each index in Array.from(new Array(16).keys())
li.ProductCard
- const productTitle = getRandomString({ minimalCharactersCount: 6, minimalCharactersCount: 32 });
span.ProductCard-Title= productTitle
img.ProductCard-Photo(
src=getRandomObjectPropertyValue(DummyImagesURIs)
alt=`「${ productTitle }」商品の写真`
)
span.ProductCard-PriceLabel
span.ProductCard-PriceLabel-Amount= getRandomInteger({ minimalValue: 1000, maximalValue: 10000 })
span.ProductCard-PriceLabel-Currency 円
此処でgetRandomString、getRandomObjectPropertyValue、
getRandomIntegerと言うYDEEの関数が利用され、但しDummyImagesURIs 連想配列型の定数はYDFの一部。
其の結果、各カードに於いて下記の様なコードHTMLコードが生成される
(img
タグに於いてsrc
アトリビュートの値は空間を占めすぎない様に部分的省略)。
<li class="ProductCard">
<span class="ProductCard-Title">5XDoHI8G9qbjrvfFAq0ZrjX2KP4qcFsHzDXS9IW6nJjOnvB0FQgulYL</span>
<img
class="ProductCard-Photo"
src="data:image/svg+xml;base64,PHN2ZyB4b(...)"
alt="「5XDoHI8G9qbjrvfFAq0ZrjX2KP4qcFsHzDXS9IW6nJjOnvB0FQgulYL」商品の写真"
>
<span class="ProductCard-PriceLabel">
<span class="ProductCard-PriceLabel-Amount">8301</span>
<span class="ProductCard-PriceLabel-Currency">円</span>
</span>
</li>
上記の様なYDEEの利用が予定されていなくても、YDFのマークアップ 関連機能の正常稼働に必要で、例えばPug混入の引数の妥当性確認 をするのに使われています。
include ../../node_modules/@yamato-daiwa/frontend/Components.pug
+Badge--YDF({ value: [] })
value
プロパティの型が間違っており、
もう一つの必須なプロパティが欠けています。
然し、YDEEを使ってプロパティの妥当性確認が実装してある御蔭で、
PugからのHTMLへの変換がエラーで落ち、
英文の中級読解程度が出来れば、説明書を読まなくてもエラーで表示された情報で不備が直せます。
よく有る質問・批判への返事
と言う事は、Pugコードの中にYDEEライブラリの殆どのコードが埋めてある?やりすぎなのではないか?
サーバ側でMVCフレームワークと同時に使用する場合、YDEEコードの存在はPugからHTMLへの変換の速度に悪影響しないのか?
影響を及ぼします。 其れに実質が有る程度 (約2-3秒ですが、サーバ側でレスポンス生成する場合 許容されない時間です)。
YDEE結合は主に静的プレビュー 段階専用ですが、PugからHTMLへの変換がウェブサイト・アプリケーションの納品の 前に済まされる場合、 他の開発段階に使っても特に問題有りません。
又、MVCパータンを用いてサーバ側レンダリングを実装する段階でも、例えばPug混入の引数の妥当性確認 (UI・UXコンポーネント の混入を含む)が動く様に、又はページの原型 が使える様に、パフォーマンスの低下無しでYDEE結合を使用する方法を下記に示します。 方法としては専用説明書 が用意してありますが、簡単に説明すると、源Pugコードを出力HTMLコードへの2段階 変換を確保しなければいけません。 1段階目の際、中間テンプレートファイルが生成され、各ファイルが データベースからのデータの様に動的データに応じて変わりません。 但し、1段階目はウェブサイト・ウェブアプリケーションの各バージョンの納品(デプロイ)の 前に一度だけ行われます。 2段階目の際、動的データが挿入され、最終のHTMLコードが 生成されます。