Go
bootstrap
template
管理画面
テンプレートエンジン

Go管理画面

Goで管理画面を作った。

その時の記事はこちら。
Goで管理画面を作る

管理画面はヘッダーやメニュー
ログイン情報など共通部分が多い。

全部のテンプレートに書くのは
あとから変える時に大変なので
まとめて共通テンプレートで作ることにした。


テンプレートをそれぞれ作る

共通で以下のテンプレートを作成。
中身は普通のHTML/CSS(bootstrap)

・menu.html
・login.html
・header.html
・footer.html
・get.html


テンプレートの中身

・menu.html

{{define "menu"}}
<div class="panel panel-primary">
    <div class="panel-heading">
        メニュー
    </div>
    <ul class="nav nav-pills nav-stacked">
        {{with .Menu}}
            <li><a href="/bm/report?uid={{.Uid}}&session={{.Session}}"><i class="glyphicon glyphicon-duplicate"></i> レポート</a></li>
            <li><a href="/bm/message?uid={{.Uid}}&session={{.Session}}"><i class="glyphicon glyphicon-comment"></i> メッセージ</a></li>
        {{end}}
    </ui>
</div>
{{end}}

各ページから指定する

ページから共通テンプレートを読む。
{{ template ~ }} を指定すればOK。

指定する名前は
{{define ~}} で定義したもの。

{{define "index"}}<!doctype html>
<html>
    <head>
        {{ template "header" . }}
    </head>
    <body>
        {{ template "login" . }}
        <div class="container">
            <div class="row">
                <div class="col-md-3">
                    {{ template "menu" . }}
                </div>
              ・
              ・
              ・

             以下省略

テンプレートをまとめて読む

あとは読む時に全部まとめて読めばOK。
大体こんな感じ。

tfs := []string{"header.html", "login.html", "menu.html"}

ms.templates["dashboard.html"] = template.Must(template.New("").ParseFiles("dashboard.html", tfs...))

(だいぶ省略しています。
 全部見たい方がいたらコメントください!)


これでOK

これで共通部が変更になっても
全ページ変えずに済むので楽ですね (^^)

フロントはあまり得意じゃないのですが
そうも言ってられないので
もっと勉強していい管理画面を作っていきます。