簡單使用 Martini 的 Router 和 Template 做網站開發!
###Router, Template
一開始我們會需要另外一個 lib,因為 Martini 的 lib 只有基本伺服器的工具,沒有包函 View Render,所以我們會需要使用 View Render 來操作 Template。
所以我們先使用 go get 來下載
go get github.com/martini-contrib/render
這樣我們就可以引用 lib 了!
package main
import (
"github.com/go-martini/martini"
"github.com/martini-contrib/render"
)
func main() {
m := martini.Classic()
m.Get("/hello/:name", func(params martini.Params) string {
return "Hello " + params["name"]
})
m.Use(render.Renderer(render.Options{
Layout: "layout",
}))
type Member struct {
Id int
Name string
Sex string
}
member := Member{
Id: 1, Name: "Negaihoshi", Sex: "Male",
}
m.Get("/", func(r render.Render) {
r.HTML(200, "hello", member)
})
m.Run()
}
首先 m.Get 是使用 Get 方法來獲取 response,如同前面一章的方法,不過稍微不同的是我們這邊稍微做一點進階的操作,我們在 router 的 rule 這邊打上 /hello/:name ,這個是什麼意思呢?意思是網址 /hello/ 下網站會看 :name 這個變數來做操作,所以下面就要寫我們要做什麼?而這邊我們返回 "Hello " + params["name"] 而 params 這邊就是用來解析引數的語法。
如果我今天輸入網址 /hello/:Negaihoshi,那我網站就會出現「 Hello Negaihoshi」。
下面這邊我們利用 Use 方法來設定 Options ,而這邊設定的是我們要使用 layout,並且指定 layout 的位置,而我們這邊寫 "layout",指的是 templates/layout.tmpl 這個檔案。
往後面看這邊就簡單了,用了前面學過得 stuct 來存放資料,並且使用 Get 方法,當有人瀏覽根目錄的時候,將 member 傳入 hello.tmpl 檔。
<title></title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
{{ yield }}
這邊其實很簡單就是使用 yield 來引入入其他的 tmpl 檔。
<table class="table table-hover">
<thead>
<tr>
<td>
ID
</td>
<td>
Name
</td>
<td>
Sex
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
{{ .Id }}
</td>
<td>
{{ .Name }}
</td>
<td>
{{ .Sex }}
</td>
</tr>
</tbody>
</table>
這邊則是印數我們要的數值,而需要用「 . 」來操作