こんにちは、スマートフォン向けソーシャルゲームのフロントエンドやってます。
うちのプロジェクトでは**FreeMarker**というJavaのテンプレートエンジンを使っています。
Freemarkerのリファレンスの使い方でよく使用するものを日本語でまとめ
こちらのブログは簡潔で分かりやすく、とても気に入っています。
ただ、ここに書かれてはいないけれど、よく使われているものは当たり前ですがまだ沢山あります。
今までプロジェクト内で見てきたもので、この書き方いいなあと思ったものや、自分が書いたものでこれはまたそのうち書きそうだな、と感じたものを少しだけコメントも交えてまとめようと思います。
上記の記事の内容を一通り頭に入れた後にこの記事を見ると、うちのプロジェクトの大抵のページのコードがFreeMarkerの観点でいえば、問題なく読めることを目指しています。
?string
flg?string('hoge', 'fuga') - 三項演算子みたいな
<#assign flg = true>
${flg?string('flgはtrue', 'flgはfalse')}
flgはtrue
jsでいうflg ? 'hoge' : 'fuga'
みたいなことができます。
date?string('yyyyMMddHHmmss') - 日付表現
<#assign date = 201503252200?datetime('yyyyMMddHHmm')>
${date?string('yyyy年MM月dd日HH時mm分')}
2015年03月25日22時00分
seconds?string('00') - ゼロ埋め
<#assign restTime = {'minutes' : 5, 'seconds' : 3}>
${restTime.minutes}:${restTime.seconds?string('00')}
5:03
「0:00」のような表記をしたいのに、数値型で値が来てしまい「0:0」となってしまうのを防げます。
その他ビルトイン
?datetime('yyyyMMddHHmm')
<#assign dateNum = 201511262200>
${dateNum?datetime('yyyyMMddHHmm')?string('MM月dd日')},
<#assign dateStr = '2015年11月26日22時00分'>
${dateStr?datetime('yyyy年MM月dd日HH時mm分')?string('yyyy/MM/dd HH:mm')}
11月26日, 2015/11/26 22:00
大文字、小文字、一文字目大文字
<#assign str = 'hoGe'>
${str?upper_case}, ${str?lower_case}, ${str?capitalize}
HOGE, hoge, Hoge
#{q} - 小数を四捨五入せずに表示
<#assign q = 2.6>
${q}, #{q}
3, 2.6
list
1..n - 配列なしで指定回数回したいとき
<#assign n = 5>
<#list 0..n as i>
${i}
</#list>
0 1 2 3 4 5
Tips
<#assign list = list + [item]>
<#assign inputList = ['hoge', 'fuga']>
<#assign outputList = []>
<#list inputList as item>
<#assign outputList = outputList + [item]>
</#list>
<#list outputList as out>
${out}
</#list>
hoge fuga
push(item)みたいなことができるのか、なるほどと感じました。
${['zero', 'one', 'two', 'three'][n]}
<#assign n = 2>
${['zero', 'one', 'two', 'three'][n]}
two
数字って素晴らしいなと思いました。
${item['${key}']}
<#assign item = {'name': 'hoge'}>
<#assign key = 'name'>
${item['${key}']}
hoge
入れ子にできるみたいで書いてて驚きました。