不會(huì)成為web主流
創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、蘇尼特左網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為蘇尼特左等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
go是設(shè)計(jì)初衷來(lái)做系統(tǒng)應(yīng)用和取代C++的....
目前主要用傳統(tǒng)編譯型語(yǔ)言編譯成機(jī)器碼的形式...
和web開(kāi)發(fā)的跨平臺(tái)標(biāo)準(zhǔn)化等特性有距離...
會(huì)成為很方便系統(tǒng)應(yīng)用開(kāi)發(fā)、客戶端開(kāi)發(fā)的語(yǔ)言...
前端框架越來(lái)越豐富,前后端分離已經(jīng)是大多數(shù)軟件團(tuán)隊(duì)采取的模式了。vue使用的場(chǎng)景也越來(lái)越多。
go本來(lái)使用template模板來(lái)進(jìn)行前端的表現(xiàn),現(xiàn)在可以用vue來(lái)分擔(dān)很大一部分工作了。
通常直接使用go語(yǔ)言寫后端,然后使用靜態(tài)模板加載渲染前端,前端獲取后端提供的數(shù)據(jù)是使用{{ }}符號(hào),2個(gè)套在一起的花括號(hào)。這個(gè)也是vue使用的數(shù)據(jù)表現(xiàn)方式。
如果go+vue來(lái)協(xié)同工作的話,需要對(duì)vue進(jìn)行一點(diǎn)設(shè)置。比如把{{ }}的方式改為[[ ]]的方式。
首先我們要知道,vue的使用,需要在頁(yè)面中加載vue.js或vue.min.js
純靜態(tài)網(wǎng)頁(yè)使用vue是這樣的(給個(gè)html例子)
然后我們實(shí)現(xiàn)一個(gè)go的簡(jiǎn)單web服務(wù)和模板頁(yè)面
這個(gè)go服務(wù)器通過(guò)端口 1989 展示服務(wù)器頁(yè)面,提供了一個(gè)靜態(tài)文件路徑 htmlpage,我們把vue.js和index.html文件都放置在htmlpage路徑里。
go服務(wù)器還用模板給前臺(tái)頁(yè)面提供了一個(gè)News結(jié)構(gòu)的數(shù)據(jù),數(shù)據(jù)包括:Title,Content,Author的值。
在index.html頁(yè)面中,加載vue.js的時(shí)候需要帶上靜態(tài)路徑 htmlpage
在 new 一個(gè) vue 變量的時(shí)候,必須有一句來(lái)設(shè)置包裹數(shù)據(jù)的符號(hào),我們這里設(shè)置這個(gè)符號(hào)為[[ ]]
同時(shí),所有需要由 vue 渲染的數(shù)據(jù),都寫成類似這樣的樣子
在 go + vue 方式下的完整模板文件 index.html
此頁(yè)面中{{ }}包裹的數(shù)據(jù)是由go從后端提供的數(shù)據(jù)( 例如:{{.Title}}),而[[ ]]包裹的數(shù)據(jù),是vue渲染的數(shù)據(jù)。
只是把 Vue里的數(shù)據(jù),改為由go后端提供即可。
好吧,作者已經(jīng)在向月亮示愛(ài)了。呵呵 _
運(yùn)行一下程序,看修改模板后的效果。
第一個(gè):Beego框架
Beego框架是astaxie的GOWeb開(kāi)發(fā)的開(kāi)源框架。Beego框架最大的特點(diǎn)是由八個(gè)大的基礎(chǔ)模塊組成,八大基礎(chǔ)模塊的特點(diǎn)是可以根據(jù)自己的需要進(jìn)行引入,模塊相互獨(dú)立,模塊之間耦合性低。
相應(yīng)的Beego的缺點(diǎn)就是全部使用時(shí)比較臃腫,通過(guò)bee工具來(lái)構(gòu)建項(xiàng)目時(shí),直接生成項(xiàng)目目錄和耦合關(guān)系,從而會(huì)導(dǎo)致在項(xiàng)目開(kāi)發(fā)過(guò)程中受制性較大。
第二個(gè):Gin框架
Gin是一個(gè)GOlang的微框架,封裝比較優(yōu)雅,API友好,源碼注釋比較明確,已經(jīng)發(fā)布了1.0版本;具有快速靈活、容錯(cuò)方便等特點(diǎn),其實(shí)對(duì)于golang而言,web框架的依賴遠(yuǎn)比Python、Java更小。
目前在很多使用golang的中小型公司中進(jìn)行業(yè)務(wù)開(kāi)發(fā),使用Gin框架的很多,大家如果想使用golang進(jìn)行熟練Web開(kāi)發(fā),可以多關(guān)注一下這個(gè)框架。
第三個(gè):Iris框架
Iris框架在其官方網(wǎng)站上被描述為GO開(kāi)發(fā)中最快的Web框架,并給出了多框架和多語(yǔ)言之前的性能對(duì)比。目前在github上,Iris框架已經(jīng)收獲了14433個(gè)star和1493個(gè)fork,可見(jiàn)是非常受歡迎的。
在實(shí)際開(kāi)發(fā)中,Iris框架與Gin框架的學(xué)習(xí)曲線幾乎相同,所以掌握了Gin就可以輕松掌握Iris框架。
第四個(gè):Echo框架
也是golang的微型Web框架,其具備快速HTTP路由器、支持?jǐn)U展中間件,同時(shí)還支持靜態(tài)文件服務(wù)、Websocket以及支持制定綁定函數(shù),制定相應(yīng)渲染函數(shù),并允許使用任意的HTML模版引擎。
適合。框架足夠成熟了 A Survey of 5 Go Web Frameworks
小型項(xiàng)目你甚至不用框架,用net/http http - The Go Programming Language
常用庫(kù)也成熟了 Top - Go Search
golang的web后端即使不concurrent也比php,ruby,python快很多很多
golang里用concurrent真的非常方便,非常非???,超大web項(xiàng)目golang scale成本低
如果你想,golang的部署可以比php更方便,使用go get和http.ServeAndListen()可以不用nginx和apache
對(duì)于文件改動(dòng)重新編譯其實(shí)并不是大問(wèn)題,看pilu/fresh · GitHub,其實(shí)你自己寫shell腳本(也可以直接用go寫,因?yàn)樗旧砭褪窍到y(tǒng)語(yǔ)言)監(jiān)控文件系統(tǒng)改動(dòng)然后自動(dòng)重新build,即使是C/C++的項(xiàng)目這也不是大問(wèn)題,人們不用C/C++寫web是因?yàn)樗鼈儾皇菍憌eb app的最佳選擇
golang寫的代碼編譯通過(guò)后,要比scripting language魯棒,因?yàn)間o compiler強(qiáng)制一些最佳實(shí)踐
可以先直接使用go自帶的http server 框架,這個(gè)框架涵蓋了絕大多數(shù)的功能,比如request response 的基本封裝,簡(jiǎn)單的路由管理,文件上傳處理。
如果發(fā)現(xiàn)Go 自帶的框架解決不了問(wèn)題,可以引入相應(yīng)的第三方組件,比如ORM可以采用中國(guó)人寫的gorm 比如web 的session 管理可以使用gorilla/session
當(dāng)然你也可以直接上大一統(tǒng)的框架比如你提到的beego 還有大名鼎鼎的martini 。不過(guò)不推薦,因?yàn)檫@樣的大框架和Go 語(yǔ)言本身的模塊設(shè)計(jì)有沖突。
實(shí)際開(kāi)發(fā)建議用vscode 加Go 插件來(lái)做IDE,基本包含了其他成熟IDE的所有功能,而且還自帶強(qiáng)大的debug 功能。其他IDE debug 用起來(lái)非常麻煩比如idea 和liteIDE。題主也可以自己試下。