FC2ブログ

GoのHTMLテンプレートエンジン yosssi/ace の使い方

github.com/yosssi/ace の使い方について、あまり記事が無いので(特に日本語は)、まとめて置きたいと思います。

まずは、READMEを見ましょう。
基本的な使い方は以下に書いてありますが、順を追って補足していきたいと思います。
https://github.com/yosssi/ace/blob/master/documentation

Go上でのコード(APIの使い方)
以下のページのような使い方をします。
https://github.com/yosssi/ace/blob/master/documentation/getting-started.md
が単純な例しか載ってないので、ここでは私が今回Webアプリの開発に使ったフレームワーク Echo でのサンプルコードを紹介します。

WebフレームワークEchoでテンプレートエンジンAceを使う

上記のページで説明があるように、Ace-proxy というものもあります。なお、Load時のオプションとは、テンプレートのBaseのディレクトリや DynamicReload とかのことです。
https://github.com/yosssi/ace-proxy

APIの詳しい説明はGoDocに書かれています。
https://godoc.org/github.com/yosssi/ace


テンプレートの書き方
Example は Ace の使い方のほんの一部に過ぎません。

テンプレートの書き方については GitHub 上の Documentation に書かれています。 Ruby の Slim と Node の Jade に似た記法で書けます(完全に一緒じゃないです)。
https://github.com/yosssi/ace/blob/master/documentation/syntax.md
なお、上のページでは出てきませんが、

p <a href="https://github.com/">GitHub</a>

のように、タグで改行せずすぐ後ろに記述する場合は、HTML をそのまま書くことが出来ます。

ところで、上記のページを隈なく探しても、繰り返し出力の定義が出てきません。
出てきませんが、AceではGoの標準テンプレートエンジンである text/template (htmlの方ではない)の記法も含めることが出来ます(一番下のActionsのところで説明されています)。

よって、標準テンプレートには for 文が存在するので、繰り返し出力が可能です(実はこれを知らなくてずっとJavaScriptで書いてました…)。

ここからは、Goの標準テンプレートエンジンの説明になりますが、以下のように使います。
qiita.com/lanevok/items/dbf591a3916070fcba0d

また、for文は以下のように for range で記述してインデックス数を使うことも出来ます。
http://increment.hatenablog.com/entry/2016/04/27/203810


ただし、Goの標準テンプレートエンジンでもそのままでは四則演算出来ません。残念(なので、私は全てGoのコード内で計算させるようにしました)。一応関数を定義すればできるそうです。
http://asakandata.hatenablog.com/entry/2015/05/06/174952



注意点
ここまで、自分用のノートにリンクをまとめたものを書き起こしたものですが、結構自分で使ってて突っかかった部分があったので以下に書きたいと思います。
  • エラー
正直テンプレートのエラー自体がわかりにくいです。Goのコードに問題があるかと思いきやテンプレートのインデントの問題だったりして、意外と落とし穴です。ただし、panic()を使うと取り敢えずテンプレートの問題であること自体は把握できます。
  • =include
インクルードに指定したテンプレート内の{{}}は認識されずそのまま出力されてしまう。標準テンプレエンジンの記法で読み込めば解決するかもしれませんが未検証です。
  • インデント
インデントはスペースにします。タブにするとうまく動きませんでした。
  • コメント
コメントもインデントを意識して、必ずコメントアウトしたい行のコードの先頭に、スラッシュと一つ以上スペースを入れて書かないとエラーになります。


因みにこのAce、Hugoにも使われているそうです。Hugo使ってみたい。
https://github.com/yosssi/ace/blob/master/documentation/projects-using-ace.md

スポンサーサイト



スポンサードリンク

ブログ内検索

プロフィール

ふじこlp

Author:ふじこlp
はてなブログへ移行しました。https://higechira.hatenablog.com/

ゆとりの大学生です。どれくらいゆとりかというと土曜日に通常授業を受けたことがただの一度もありません。

IBM時代のT43は観賞用となりましたが、X61は現役。
スクエアThinkPad X Series 最高です。
MacBook Pro 始めました。がやはりThinkPadに勝る打ち心地は存在しませんね。

カレンダー

10 | 2019/11 | 12
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

天気予報


-天気予報コム- -FC2-

フリーエリア

ブロとも申請フォーム

QRコード

QR

アクセスカウンター