Nunjucks
表示
概要
[編集]Nunjucksは、Mozilla が開発した強力なJavaScriptテンプレートエンジンです。Jinja2に触発された構文を持ち、豊富な機能と柔軟性を提供します。
インストールと設定
[編集]Node.jsでのインストール
[編集]npm install nunjucks
基本的なセットアップ
[編集]const nunjucks = require('nunjucks'); nunjucks.configure('views', { autoescape: true, noCache: false, watch: true });
基本構文
[編集]変数の表示
[編集]変数を表示するには二重中括弧({{}}
)を使用します:
<h1>{{ title }}</h1> <p>{{ description }}</p>
フィルタ
[編集]フィルタを使用して値を変換できます:
{{ name | title }} {{ date | date('YYYY-MM-DD') }} {{ text | truncate(100) }}
制御構文
[編集]条件分岐
[編集]if文による条件分岐:
{% if user %} <h1>{{ user.name }}さん、こんにちは!</h1> {% elif guest %} <h1>ゲストさん、こんにちは!</h1> {% else %} <h1>こんにちは!</h1> {% endif %}
ループ処理
[編集]for文によるループ処理:
{% for item in items %} <div class="item"> <h2>{{ item.title }}</h2> <p>{{ item.description }}</p> </div> {% endfor %}
テンプレート継承
[編集]基本レイアウト
[編集]layout.njkファイル:
- layout.njk
<!DOCTYPE html> <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html>
子テンプレート
[編集]page.njkファイル:
{% extends "layout.njk" %} {% block title %}ページタイトル{% endblock %} {% block content %} <h1>ページ内容</h1> {% endblock %}
マクロ
[編集]マクロの定義と使用
[編集]{% macro input(name, value='', type='text') %} <input type="{{ type }}" name="{{ name }}" value="{{ value }}"> {% endmacro %} {{ input('username') }} {{ input('password', '', 'password') }}
インクルード
[編集]パーシャルの使用
[編集]{% include "header.njk" %} {% include "sidebar.njk" ignore missing %}
カスタムフィルタとエクステンション
[編集]カスタムフィルタの作成
[編集]env.addFilter('shorten', function(str, count) { return str.slice(0, count || 5); });
カスタムタグの作成
[編集]env.addExtension('CustomTag', new function() { this.tags = ['customtag']; this.parse = function(parser, nodes, lexer) { // パース処理 }; });
非同期処理
[編集]非同期フィルタ
[編集]env.addFilter('async', function(str) { return new Promise((resolve) => { setTimeout(() => { resolve(str.toUpperCase()); }, 1000); }); }, true);
セキュリティ
[編集]エスケープ処理
[編集]- autoescapeオプション
- safe フィルタの使用
- XSS対策
パフォーマンス最適化
[編集]キャッシュ設定
[編集]- テンプレートのキャッシュ
- プリコンパイル
- 最適化オプション
デバッグとトラブルシューティング
[編集]デバッグ方法
[編集]- debugステートメント
- エラー処理
- トレース情報
環境設定
[編集]プロダクション設定
[編集]nunjucks.configure('views', { autoescape: true, noCache: false, watch: false, throwOnUndefined: false });
ベストプラクティス
[編集]コード整理
[編集]- ファイル構成
- 命名規則
- モジュール化
エラー処理
[編集]- try/catchブロック
- エラーページ
- ログ記録
統合とツール
[編集]フレームワーク統合
[編集]- Express.js
- Next.js
- その他のフレームワーク
ビルドツール
[編集]- Webpack
- Gulp
- Grunt
テスト
[編集]テンプレートのテスト
[編集]- ユニットテスト
- 統合テスト
- スナップショットテスト
APIリファレンス
[編集]主要なAPI
[編集]- configure()
- render()
- renderString()
- compile()
コミュニティリソース
[編集]ドキュメント
[編集]- 公式ガイド
- チュートリアル
- サンプルプロジェクト
サポート
[編集]- GitHubイシュー
- Stack Overflow
- コミュニティフォーラム