はじめに
- 前回 の続きで管理画面のテンプレートを文字列からテンプレートファイルに変更する
- テンプレートファイルは go-bindata を使って Go のソースコードに埋め込んで扱う
- また godo を使ってテンプレートファイルの更新時に go-bindata を実行してソースコードも更新する
レポジトリ
go-bindata でテンプレートファイルをコードに埋め込む
- go-bindata をインストールして実行するだけ
インストール
go get -u github.com/jteeuwen/go-bindata/...
実行
go-bindata -o bindata/bindata.go -pkg "bindata" -prefix "templates/" templates/...
-
-o
が出力先 -
-pkg
で出力するコードのパッケージを指定する- デフォルトだと
main
になってインポートして扱いづらいので任意で指定する
- デフォルトだと
-
-prefix
でファイルを呼び出すときに省略する文字列を指定- 例のように指定すると
templates/index.html
をindex.html
だけで呼び出せる
- 例のように指定すると
- 最後の引数の
templates/...
が埋め込み対象のファイル- 例のようにすると
templates
以下のファイルが全て対象になる
- 例のようにすると
go-bindata で埋め込んだファイルを扱う
// 生成したコードをインポートし、ファイル名を指定すると []byte が取得できる
bytes, err := bindata.Assets("index.html")
godo でコードの自動生成を行う
インストール
go get -u gopkg.in/godo.v2/cmd/godo
設定ファイルの作成
- 設定は Go のコードで行う
- ファイル名は
Gododir/main.go
とかで固定
Gododir/main.go
package main
import (
do "gopkg.in/godo.v2"
)
func tasks(p *do.Project) {
do.Env = `GOPATH=.vendor::$GOPATH`
p.Task("bindata", nil, func(c *do.Context) {
c.Run(`go-bindata -o bindata/bindata.go -pkg "bindata" -prefix "templates/" templates/...`)
}).Src("templates/**/*")
}
func main() {
do.Godo(tasks)
}
ファイルの変更監視と自動更新を行う
- Gododir の上のディレクトリで実行
godo bindata --watch