LoginSignup
3
2

More than 5 years have passed since last update.

Node.js 実践講座 事例編 その1 | EJSによるCSV出力

Last updated at Posted at 2015-12-21

はじめに

この記事ではテンプレートエンジンである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のテンプレートを描画するにはejsrender関数を呼び出します。第1引数にはテンプレートを文字列として指定し、第2引数にはコンテキストをオブジェクトとして指定します。

JavaScriptのコードを実行したい範囲を<%%>で囲みます。なお、<%-%>で囲むことによって改行を抑制することができます。

JavaScriptのコードを実行し、さらにその実行結果を出力したい場合には<%=%>で囲みます。

おわりに

次回はJadeを使用して帳票出力を実装する方法を紹介します。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2