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に置換されます。
{{}}と{{{}}}の違い
{{hoge}}の場合、HTMLエスケープされます。
HTMLエスケープをさせたくない場合は、{{{hoge}}}というようにテンプレートを作成します。
オンラインで確認
テンプレート変換を、テンプレート、インプットを入力してオンラインで確認することが出来ます。
ビルトインヘルパー(if)
Handlebars
Minimal templating on steroids
ビルトインヘルパー(each)
Handlebars
Minimal templating on steroids
公式サイト:https://www.npmjs.com/package/handlebars

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント