ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
EJS のタグ一覧
EJS には用途別に複数のタグがあります。最低限この 3 つを覚えれば実用上ほぼ困りません。
| タグ | 意味 | 出力 |
|---|---|---|
<%= 値 %> | 値を出力(HTML エスケープあり) | < 等に変換される |
<%- 値 %> | 値を出力(エスケープなし、生 HTML) | そのまま出る |
<% 文 %> | JavaScript 文の実行(if / for など) | 何も出ない |
<%# コメント %> | テンプレート内コメント | 何も出ない |
<%% / %%> | リテラルの <% / %> を出力 | <% / %> |
最小サンプル ─ http モジュールで動かす
素の Node.js(Express を使わない)構成で、EJS を使って test.ejs をレンダリングしてレスポンスする最小例です。
server.js
const http = require('http');
const ejs = require('ejs');
const fs = require('fs');
// テンプレートを 1 回だけ読み込む(毎リクエストで読むと遅い)
const template = fs.readFileSync('test.ejs', 'utf-8');
const server = http.createServer((req, res) => {
// EJS でレンダリング(第 2 引数のオブジェクトがビューに渡る変数)
const html = ejs.render(template, {
val1: 'val1',
});
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.write(html);
res.end();
});
server.listen(8000);
console.log('サーバー起動中... http://localhost:8000/');
test.ejs
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>EJSサンプル</title>
</head>
<body>
<!-- エスケープなし(生 HTML 込み) -->
<p><%- val1 %></p>
<!-- エスケープあり(推奨) -->
<p><%= val1 %></p>
<!-- for ループ -->
<% for (let i = 0; i < 5; i++) { %>
<p><%= i %></p>
<% } %>
</body>
</html>
起動と動作確認
# ejs をインストール
npm install ejs
# サーバ起動
node server.js
# ブラウザで開く
# http://localhost:8000/
ブラウザでアクセスすると、val1 の中身と 0〜4 の数字が表示されます。
出力結果

<%= %> と <%- %> の使い分け
| タグ | 用途 |
|---|---|
<%= %> | ユーザ入力 / DB から読んだ値 / 文字列全般。XSS 対策のため標準はこちら |
<%- %> | 事前に安全と分かっている HTML 断片を埋め込みたいとき(部分テンプレートやサニタイズ済みエディタ出力) |
区別を間違えると Cross-Site Scripting(XSS)に直結します。デフォルトは必ず <%= %> を使い、<%- %> は明確に意図したときだけにしてください。
if 文 / 配列ループ
<!-- 条件分岐 -->
<% if (user) { %>
<p>こんにちは <%= user.name %> さん</p>
<% } else { %>
<p>ログインしてください</p>
<% } %>
<!-- 配列を回す -->
<ul>
<% items.forEach(item => { %>
<li><%= item.name %> ─ <%= item.price %>円</li>
<% }) %>
</ul>
Express で使う場合
素の http サーバではなく Express を使うと、ビューエンジン登録だけで res.render から呼び出せます。
const express = require('express');
const app = express();
app.set('view engine', 'ejs');
app.set('views', './views'); // ./views/*.ejs を探す
app.get('/', (req, res) => {
res.render('index', { val1: 'val1', items: [1, 2, 3] });
});
app.listen(3000);
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- インストール
- 値の表示と処理の記述
- テンプレートの共通化(組み込み)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?