前端框架越來越豐富,前后端分離已經(jīng)是大多數(shù)軟件團隊采取的模式了。vue使用的場景也越來越多。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),崇義企業(yè)網(wǎng)站建設(shè),崇義品牌網(wǎng)站建設(shè),網(wǎng)站定制,崇義網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,崇義網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
go本來使用template模板來進行前端的表現(xiàn),現(xiàn)在可以用vue來分擔(dān)很大一部分工作了。
通常直接使用go語言寫后端,然后使用靜態(tài)模板加載渲染前端,前端獲取后端提供的數(shù)據(jù)是使用{{ }}符號,2個套在一起的花括號。這個也是vue使用的數(shù)據(jù)表現(xiàn)方式。
如果go+vue來協(xié)同工作的話,需要對vue進行一點設(shè)置。比如把{{ }}的方式改為[[ ]]的方式。
首先我們要知道,vue的使用,需要在頁面中加載vue.js或vue.min.js
純靜態(tài)網(wǎng)頁使用vue是這樣的(給個html例子)
然后我們實現(xiàn)一個go的簡單web服務(wù)和模板頁面
這個go服務(wù)器通過端口 1989 展示服務(wù)器頁面,提供了一個靜態(tài)文件路徑 htmlpage,我們把vue.js和index.html文件都放置在htmlpage路徑里。
go服務(wù)器還用模板給前臺頁面提供了一個News結(jié)構(gòu)的數(shù)據(jù),數(shù)據(jù)包括:Title,Content,Author的值。
在index.html頁面中,加載vue.js的時候需要帶上靜態(tài)路徑 htmlpage
在 new 一個 vue 變量的時候,必須有一句來設(shè)置包裹數(shù)據(jù)的符號,我們這里設(shè)置這個符號為[[ ]]
同時,所有需要由 vue 渲染的數(shù)據(jù),都寫成類似這樣的樣子
在 go + vue 方式下的完整模板文件 index.html
此頁面中{{ }}包裹的數(shù)據(jù)是由go從后端提供的數(shù)據(jù)( 例如:{{.Title}}),而[[ ]]包裹的數(shù)據(jù),是vue渲染的數(shù)據(jù)。
只是把 Vue里的數(shù)據(jù),改為由go后端提供即可。
好吧,作者已經(jīng)在向月亮示愛了。呵呵 _
運行一下程序,看修改模板后的效果。
Java教程
Linux入門
更多
首頁
?
Go語言WEB框架(Gin)詳解
在 Go語言開發(fā)的 Web 框架中,有兩款著名 Web 框架分別是 Martini 和 Gin,兩款 Web 框架相比較的話,Gin 自己說它比 Martini 要強很多。
Gin 是 Go語言寫的一個 web 框架,它具有運行速度快,分組的路由器,良好的崩潰捕獲和錯誤處理,非常好的支持中間件和 json??傊?Go語言開發(fā)領(lǐng)域是一款值得好好研究的 Web 框架,開源網(wǎng)址:
首先下載安裝 gin 包:
go get -u github點抗 /gin-gonic/gin
一個簡單的例子:
package main
import "github點抗 /gin-gonic/gin"
func main() {
//Default返回一個默認的路由引擎
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
//輸出json結(jié)果給調(diào)用方
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
編譯運行程序,打開瀏覽器,訪問頁面顯示:
{"message":"pong"}
gin 的功能不只是簡單輸出 Json 數(shù)據(jù)。它是一個輕量級的 WEB 框架,支持 RestFull 風(fēng)格 API,支持 GET,POST,PUT,PATCH,DELETE,OPTIONS 等 http 方法,支持文件上傳,分組路由,Multipart/Urlencoded FORM,以及支持 JsonP,參數(shù)處理等等功能,這些都和 WEB 緊密相關(guān),通過提供這些功能,使開發(fā)人員更方便地處理 WEB 業(yè)務(wù)。
Gin 實際應(yīng)用
接下來使用 Gin 作為框架來搭建一個擁有靜態(tài)資源站點,動態(tài) WEB 站點,以及 RESTFull API 接口站點(可專門作為手機 APP 應(yīng)用提供服務(wù)使用)組成的,亦可根據(jù)情況分拆這套系統(tǒng),每種功能獨立出來單獨提供服務(wù)。
下面按照一套系統(tǒng)但采用分站點來說明,首先是整個系統(tǒng)的目錄結(jié)構(gòu),website 目錄下面 static 是資源類文件,為靜態(tài)資源站點專用;photo 目錄是 UGC 上傳圖片目錄,tpl 是動態(tài)站點的模板。
當(dāng)然這個目錄結(jié)構(gòu)是一種約定,可以根據(jù)情況來修改。整個項目已經(jīng)開源,可以訪問來詳細了解:具體每個站點的功能怎么實現(xiàn)呢?請看下面有關(guān)每個功能的講述:
靜態(tài)資源站點
一般網(wǎng)站開發(fā)中,我們會考慮把 js,css,以及資源圖片放在一起,作為靜態(tài)站點部署在 CDN,提升響應(yīng)速度。采用 Gin 實現(xiàn)起來非常簡單,當(dāng)然也可以使用 net/http 包輕松實現(xiàn),但使用 Gin 會更方便。
不管怎么樣,使用 Go 開發(fā),我們可以不用花太多時間在 WEB 服務(wù)環(huán)境搭建上,程序啟動就直接可以提供 WEB 服務(wù)了。
package main
import (
"net/http"
"github點抗 /gin-gonic/gin"
)
func main() {
router := gin.Default()
// 靜態(tài)資源加載,本例為css,js以及資源圖片
router.StaticFS("/public", http.Dir("D:/goproject/src/github點抗 /ffhelicopter/tmm/website/static"))
router.StaticFile("/favicon.ico", "./resources/favicon.ico")
// Listen and serve on 0.0.0.0:80
router.Run(":80")
}
首先需要是生成一個 Engine,這是 gin 的核心,默認帶有 Logger 和 Recovery 兩個中間件。
router := gin.Default()
StaticFile 是加載單個文件,而 StaticFS 是加載一個完整的目錄資源:
func (group *RouterGroup) StaticFile(relativePath, filepath string) IRoutes
func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) IRoutes
這些目錄下資源是可以隨時更新,而不用重新啟動程序?,F(xiàn)在編譯運行程序,靜態(tài)站點就可以正常訪問了。
方案一:
利用GOLANG自帶的HTTP模塊,很少的代碼就能實現(xiàn)一個HTTPWEB服務(wù)器。
方案二:自己造輪子
首先,最基本的是http1.1(RFC2616)要徹底搞清楚弄明白?,F(xiàn)在是2018年了,http2.0也是必選項了;
其次,GOLANG的基本編程技能,尤其是TCP/IP編程要熟練;
再次,多線程/協(xié)程/高并發(fā)處理是一個難點,要有必要的經(jīng)驗;
最后,請參考Nginx,這個高性能、可靠、易用的WEB服務(wù)器。
一般我們用Golang原生寫Web時,一般這樣寫
如果需要特定的GET,POST,PUT,DELETE處理. 我們需要這樣寫.
對以上方法操作進行了封裝.
不過最后還是推薦使用httprouter, 大名頂頂?shù)腉in Web框架就是使用這個的. 自己寫的,純屬學(xué)習(xí).