Pug から JavaScript へ変数渡し
理解
Jade (現在は Pug と呼ばれることが多い) は、Node.js でよく使われるテンプレートエンジンです。このエンジンは、HTML のような構造をより簡潔に記述することができます。JavaScript ファイルから Jade テンプレートにデータを渡すことは、動的なウェブサイトやアプリケーションを作る上で非常に重要です。
方法
-
Node.js サーバーの設定
- Node.js と Express.js をセットアップします。
- ルートを定義し、Jade テンプレートをレンダリングする際に、変数を渡します。
const express = require('express'); const app = express(); app.set('view engine', 'pug'); app.get('/', (req, res) => { const myVariable = 'Hello, World!'; res.render('index', { myVariable: myVariable }); }); app.listen(3000, () => { console.log('Server listening on port 3000'); });
-
Jade テンプレートの作成
- Jade テンプレートファイル (index.pug) を作成し、変数をスクリプトタグ内に埋め込みます。
doctype html html head title My Webpage body script. const myVariable = "#{myVariable}"; console.log(myVariable);
解説
- Jade テンプレート
#{myVariable}
の部分は、サーバーから渡されたmyVariable
の値を埋め込みます。- JavaScript のスクリプトタグ内で、この変数にアクセスできます。
- Node.js サーバー
注意
- Jade テンプレートは、サーバーサイドでレンダリングされるため、クライアントサイドの JavaScript ファイルから直接アクセスすることはできません。
- Jade テンプレート内で直接 JavaScript コードを書くことはできますが、複雑なロジックや大量の JavaScript コードを書く場合は、別々の JavaScript ファイルに分割することをお勧めします。
テンプレート内で JavaScript 変数を初期化
- Pug テンプレート内で直接 JavaScript 変数を初期化し、その変数を JavaScript ファイルで利用します。
doctype html
html
head
title My Webpage
body
script.
const myVariable = 'Hello, World!';
console.log(myVariable);
データ属性を利用
- Pug テンプレートで HTML 要素に
data-*
属性を使って変数を設定し、JavaScript ファイルでその属性値を取得します。
doctype html
html
head
title My Webpage
body
div(data-my-variable='Hello, World!')
script.
const myVariable = document.querySelector('div').dataset.myVariable;
console.log(myVariable);
JSON データを利用
- Pug テンプレート内で JSON データを生成し、JavaScript ファイルでそのデータを読み込みます。
doctype html
html
head
title My Webpage
body
script.
const myData = {
myVariable: 'Hello, World!'
};
console.log(myData.myVariable);
- 複雑性
データ属性や JSON データを利用する方法は、特に複雑なデータ構造の場合、コードが冗長になる可能性があります。 - セキュリティリスク
直接テンプレート内で JavaScript 変数を初期化する場合、セキュリティ上のリスクがあります。特に、ユーザー入力などの動的なデータを直接埋め込むことは避けてください。
javascript node.js pug