G01學習筆記-7

zcold發表於2021-05-24

閱讀位置9.7

知識點

1、mux.router 靜態資源訪問

 r.PathPrefix("/js/").Handler(http.FileServer(http.Dir("./public")))

PathPrefix() 匹配引數裡 /css/ 字首的 URI , 鏈式呼叫 Handler() 指定處理器為 http.FileServer()。

http.FileServer() 是檔案目錄處理器,引數 http.Dir(“./public”) 是指定在此目錄下尋找檔案

2、Go 標準庫的模板分層

關鍵詞 definetemplate

{{define ... }} 是定義模板,而 {{template ...}} 是使用模板。
{{define ... }} 跟著的引數是模板的名稱,而 {{template ...}} 有兩個引數,第一個是模板,第二個是傳給模板使用的資料。

{{define "template_name"}}
{{template "template_name"  .}}

3、渲染模版

filepath : 路徑處理包
filepath.Glob(): 生成與傳參匹配的檔名稱 Slice
template.ParseFiles(): 解析模板檔案
Template.ExecuteTemplate(): 渲染模板

 files, err := filepath.Glob(dirPrefix + "/layouts/*.gohtml")

// 在 Slice 裡新增我們的目標檔案
newFiles := append(files, dirPrefix+"/articles/index.gohtml")

// 解析模板檔案
tmpl, err := template.ParseFiles(newFiles...)

// 渲染模板,將所有文章的資料傳輸進去
tmpl.ExecuteTemplate(w, "app", articles)

作業

app/http/controllers/page_controller

// Home 首頁
func (*PagesController) Home(w http.ResponseWriter, r *http.Request) {
    view.Render(w, view.D{},  "home")
}

// About 關於我們頁面
func (*PagesController) About(w http.ResponseWriter, r *http.Request) {
    view.Render(w, view.D{},  "pages.about")
}

// NotFound 404 頁面
func (*PagesController) NotFound(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusNotFound)
    view.Render(w, view.D{},  "not_found")
}

resource/views/pages/about.gohtml

{{define "title"}}
  關於我們
{{end}}

{{define "main"}}
  <div class="col-md-9 blog-main">
    <h1>歡迎來到goblog</h1>
    此部落格是用以記錄程式設計筆記,如您有反饋或建議,請聯絡
    <a href="mailto:zcold@example.com">zcold@example.com</a>
  </div>

{{end}}

G01學習筆記-7

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章