AWS Lambda(node.js)でテンプレートエンジンのhandlebars.jsの使い方

AWS Lambda(node.js)でテンプレートエンジンのhandlebars.jsの使い方

Lambda(node.js)でテンプレートエンジンを使いたい時があったのでhandlebars.jsを選定して使ってみました。

インストールします。

npm i --save handlebars

メールやプッシュ通知の一斉送信などをテンプレートを使って使用したい時に便利かもしれません。

使用例です。

const handlebars = require('handlebars')
const obj = {
  title: '初めまして',
  body: '私の名前は{{name}}です.年齢は{{age}}です.'
}
const replace = {
  name: '高橋',
  age: 16
}

// compileメソッドには文字列を渡す
const data = handlebars.compile(JSON.stringify(obj))(replace)
console.log(ret) // {"title":"初めまして","body":"私の名前は高橋です.年齢は16です."}

テンプレートファイルを作成する

テンプレートファイルを別に配置して、読み込ませます。

├─index.js
├─node_modules
└─template.tpl

index.js

const handlebars = require('handlebars')
const fs = require('fs')

exports.handler = async (event, context) => {
  const replace = {
    name: '高橋',
    age: 16
  }
  const text =fs.readFileSync('./template.tpl').toString('UTF-8')

  const data = handlebars.compile(JSON.stringify(text))(replace)
  return {
    statusCode: 200,
    headers: event,
    body: data
  }
}

template.tpl

{
  title: '初めまして',
  body: '私の名前は{{name}}です.年齢は{{age}}です.'
}

カスタムヘルパー

Handlebars.registerHelper('名前', 関数)で、カスタムヘルパーを登録することができます。

const escapeLineFeed = (str) => {
  return str.replace(/\r\n|\n/g, '\\n')
}
handlebars.registerHelper('esclf', escapeLineFeed)

このカスタムヘルパーescifはテンプレートファイル内で以下のように使用します。

{{escif hoge}}

hogeに\r\nや\nがあれば、\nに置換されます。

AWS Lambda(node.js)でテンプレートエンジンのhandlebars.jsの使い方

{{}}と{{{}}}の違い

{{hoge}}の場合、HTMLエスケープされます。

HTMLエスケープをさせたくない場合は、{{{hoge}}}というようにテンプレートを作成します。

オンラインで確認

テンプレート変換を、テンプレート、インプットを入力してオンラインで確認することが出来ます。

ビルトインヘルパー(if)

Handlebars

ビルトインヘルパー(each)

Handlebars

公式サイト:https://www.npmjs.com/package/handlebars

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました