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
ビルトインヘルパー(each)
Handlebars
公式サイト:https://www.npmjs.com/package/handlebars
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント