我們在前面已經講過如何處理靜態文件,這小節我們詳細的介紹如何在beego里面設置和使用靜態文件。通過再介紹一個twitter開源的html、css框架bootstrap,無需大量的設計工作就能夠讓你快速地建立一個漂亮的站點。
## [](https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/14.1.md#beego靜態文件實現和設置)beego靜態文件實現和設置
Go的net/http包中提供了靜態文件的服務,`ServeFile`和`FileServer`等函數。beego的靜態文件處理就是基于這一層處理的,具體的實現如下所示:
~~~
//static file server
for prefix, staticDir := range StaticDir {
if strings.HasPrefix(r.URL.Path, prefix) {
file := staticDir + r.URL.Path[len(prefix):]
http.ServeFile(w, r, file)
w.started = true
return
}
}
~~~
StaticDir里面保存的是相應的url對應到靜態文件所在的目錄,因此在處理URL請求的時候只需要判斷對應的請求地址是否包含靜態處理開頭的url,如果包含的話就采用http.ServeFile提供服務。
舉例如下:
~~~
beego.StaticDir["/asset"] = "/static"
~~~
那么請求url如`http://www.beego.me/asset/bootstrap.css`就會請求`/static/bootstrap.css`來提供反饋給客戶端。
## [](https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/14.1.md#bootstrap集成)bootstrap集成
Bootstrap是Twitter推出的一個開源的用于前端開發的工具包。對于開發者來說,Bootstrap是快速開發Web應用程序的最佳前端工具包。它是一個CSS和HTML的集合,它使用了最新的HTML5標準,給你的Web開發提供了時尚的版式,表單,按鈕,表格,網格系統等等。
* 組件 Bootstrap中包含了豐富的Web組件,根據這些組件,可以快速的搭建一個漂亮、功能完備的網站。其中包括以下組件: 下拉菜單、按鈕組、按鈕下拉菜單、導航、導航條、面包屑、分頁、排版、縮略圖、警告對話框、進度條、媒體對象等
* Javascript插件 Bootstrap自帶了13個jQuery插件,這些插件為Bootstrap中的組件賦予了“生命”。其中包括: 模式對話框、標簽頁、滾動條、彈出框等。
* 定制自己的框架代碼 可以對Bootstrap中所有的CSS變量進行修改,依據自己的需求裁剪代碼。
[](https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/images/14.1.bootstrap.png?raw=true)
圖14.1 bootstrap站點
接下來我們利用bootstrap集成到beego框架里面來,快速的建立一個漂亮的站點。
1. 首先把下載的bootstrap目錄放到我們的項目目錄,取名為static,如下截圖所示
[](https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/images/14.1.bootstrap2.png?raw=true)
圖14.2 項目中靜態文件目錄結構
2. 因為beego默認設置了StaticDir的值,所以如果你的靜態文件目錄是static的話就無須再增加了:
StaticDir["/static"] = "static"
3. 模板中使用如下的地址就可以了:
~~~
//css文件
<link href="/static/css/bootstrap.css" rel="stylesheet">
//js文件
<script src="/static/js/bootstrap-transition.js"></script>
//圖片文件
<img src="/static/img/logo.png">
~~~
上面可以實現把bootstrap集成到beego中來,如下展示的圖就是集成進來之后的展現效果圖:
[](https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/images/14.1.bootstrap3.png?raw=true)
圖14.3 構建的基于bootstrap的站點界面
這些模板和格式bootstrap官方都有提供,這邊就不再重復貼代碼,大家可以上bootstrap官方網站學習如何編寫模板。
- 第一章 Go環境配置
- 1.1 Go安裝
- 1.2 GOPATH 與工作空間
- 1.3 Go 命令
- 1.4 Go開發工具
- 1.5 小結
- 第二章 Go語言基礎
- 2.1 你好,Go
- 2.2 Go基礎
- 2.3 流程和函數
- 2.4 struct類型
- 2.5 面向對象
- 2.6 interface
- 2.7 并發
- 2.8 總結
- 第三章 Web基礎
- 3.1 Web工作方式
- 3.2 Go搭建一個Web服務器
- 3.3 Go如何使得Web工作
- 3.4 Go的http包詳解
- 3.5 小結
- 第四章 表單
- 4.1 處理表單的輸入
- 4.2 驗證表單的輸入
- 4.3 預防跨站腳本
- 4.4 防止多次遞交表單
- 4.5 處理文件上傳
- 4.6 小結
- 第五章 訪問數據庫
- 5.1 database/sql接口
- 5.2 使用MySQL數據庫
- 5.3 使用SQLite數據庫
- 5.4 使用PostgreSQL數據庫
- 5.5 使用beedb庫進行ORM開發
- 5.6 NOSQL數據庫操作
- 5.7 小結
- 第六章 session和數據存儲
- 6.1 session和cookie
- 6.2 Go如何使用session
- 6.3 session存儲
- 6.4 預防session劫持
- 6.5 小結
- 第七章 文本處理
- 7.1 XML處理
- 7.2 JSON處理
- 7.3 正則處理
- 7.4 模板處理
- 7.5 文件操作
- 7.6 字符串處理
- 7.7 小結
- 第八章 Web服務
- 8.1 Socket編程
- 8.2 WebSocket
- 8.3 REST
- 8.4 RPC
- 8.5 小結
- 第九章 安全與加密
- 9.1 預防CSRF攻擊
- 9.2 確保輸入過濾
- 9.3 避免XSS攻擊
- 9.4 避免SQL注入
- 9.5 存儲密碼
- 9.6 加密和解密數據
- 9.7 小結
- 第十章 國際化和本地化
- 10.1 設置默認地區
- 10.2 本地化資源
- 10.3 國際化站點
- 10.4 小結
- 第十一章 錯誤處理,調試和測試
- 11.1 錯誤處理
- 11.2 使用GDB調試
- 11.3 Go怎么寫測試用例
- 11.4 小結
- 第十二章 部署與維護
- 12.1 應用日志
- 12.2 網站錯誤處理
- 12.3 應用部署
- 12.4 備份和恢復
- 12.5 小結
- 第十三章 如何設計一個Web框架
- 13.1 項目規劃
- 13.2 自定義路由器設計
- 13.3 controller設計
- 13.4 日志和配置設計
- 13.5 實現博客的增刪改
- 13.6 小結
- 第十四章 擴展Web框架
- 14.1 靜態文件支持
- 14.2 Session支持
- 14.3 表單及驗證支持
- 14.4 用戶認證
- 14.5 多語言支持
- 14.6 pprof支持
- 14.7 小結
- 附錄A 參考資料