はじめに
この記事ではテンプレートエンジンであるEJSを使用してCSV出力を実装する方法を紹介します。
EJSとは
EJSはJavaScriptのテンプレートエンジンの一つです。EJSの書き方はPHPに似ており、HTMLの他にも様々な形式に対応することができる汎用性の高いテンプレートエンジンです。
EJSを使用したテンプレートの一例を下記に示します。
氏名: <%= user.name %> さん
年齢: <%= user.age %> 歳
身長: <%= user.height %> cm
体重: <%= user.weight %> kg
備考:
<% user.tags.forEach(function(tag) { -%>
- <%= tag.name %>: <%= tag.value %>
<% }) -%>
上記のテンプレートに対して下記のコンテキストを与えるとします。
{
"user": {
"name": "長岡 太郎",
"age": 25,
"height": 170,
"weight": 65,
"tags": [
{
"name": "出身",
"value": "新潟県"
},
{
"name": "趣味",
"value": "プログラミング"
}
]
}
}
描画の実行結果を下記に示します。
氏名: 長岡 太郎 さん
年齢: 25 歳
身長: 170 cm
体重: 65 kg
備考:
- 出身: 新潟県
- 趣味: 北海道
ワークスペースの作成
ワークスペースの作成コマンドを下記に示します。
mkdir -p ~/workspace/js/practice/01-csv-export
touch ~/workspace/js/practice/01-csv-export/index.js
EJSのインストール
EJSのインストールコマンドを下記に示します。
npm install ejs
EJSの使用方法
ソースコード
サンプルプログラムのソースコードの内容を下記に示します。
index.js
'use strict';
var ejs = require('ejs')
var template = [
'Name,Age',
'<% users.forEach(function (user) { -%>',
'<%= user.name %>,<%= user.age %>',
'<% }) -%>',
].join('\n')
var options = {
users: [
{ name: 'A', age: 20 },
{ name: 'B', age: 25 },
{ name: 'C', age: 30 },
{ name: 'D', age: 35 },
{ name: 'E', age: 40 },
],
}
var result = ejs.render(template, options)
console.log(result)
実行コマンド
実行コマンドを下記に示します。
node index.js
実行結果
実行結果を下記に示します。
Name,Age
A,20
B,25
C,30
D,35
E,40
解説
EJSのテンプレートを描画するにはejs
のrender
関数を呼び出します。第1引数にはテンプレートを文字列として指定し、第2引数にはコンテキストをオブジェクトとして指定します。
JavaScriptのコードを実行したい範囲を<%
と%>
で囲みます。なお、<%
と-%>
で囲むことによって改行を抑制することができます。
JavaScriptのコードを実行し、さらにその実行結果を出力したい場合には<%=
と%>
で囲みます。
おわりに
次回はJadeを使用して帳票出力を実装する方法を紹介します。