項(xiàng)目需要搭建一個(gè)web前后端言沐,前端使用了vue-admin-template框架望浩,因?yàn)檫@個(gè)不屬于新學(xué)習(xí)的內(nèi)容次酌,這次按下不表恨课,該文章主要是記錄怎么搭建gin后臺(tái)舆乔。后端本來(lái)用django已經(jīng)搭建完成了,但是基于一直想學(xué)習(xí)一下gin框架剂公,趁著這次機(jī)會(huì)希俩,搭建一下gin。因?yàn)橄惹坝眠^(guò)beego纲辽,搭建的過(guò)程中最好跟beego對(duì)比一下颜武。剛有這個(gè)想法,有幾個(gè)疑問(wèn)拖吼,需要逐一了解鳞上。gin中文文檔
- gin的mvc框架如何體現(xiàn),項(xiàng)目的目錄會(huì)很明顯的體現(xiàn)出來(lái)么绿贞,類似beego的model, controller等因块,需要確定好項(xiàng)目的整體布局
2.因?yàn)檫@次的項(xiàng)目需要連接數(shù)據(jù)庫(kù),并操作數(shù)據(jù)庫(kù)表籍铁,gin有自己的orm么
3.前端怎么整合到后臺(tái)里面
好啦,開(kāi)始~
1.orm框架選擇
https://studygolang.com/articles/10208
看了這篇文章趾断,因?yàn)檫@次的項(xiàng)目也不是大型的項(xiàng)目拒名,只為了練手,看了一下比較流行的xrom和grom都能滿足需求的芋酌,看了github增显,gorm的star數(shù)目比較多,好了就用它(就這么隨意)
2. 選定了orm脐帝,就看一下gin gorm怎么搭建mvc框架
- gorm本身不支持?jǐn)?shù)據(jù)庫(kù)表生成go struct文件同云,需要借助其余工具(據(jù)說(shuō)xorm可以)
2)日志設(shè)置:https://www.flysnow.org/2017/05/06/go-in-action-go-log.html這個(gè)日志不是很好,不符合太過(guò)于冗余堵腹,后續(xù)可以修改
3)熱更新:https://juejin.im/post/5e1309fce51d4541111e9a1e用fresh
3. 如何部署前后端
1)前端配置一下生成的靜態(tài)文件路徑炸站,自定義到后端路徑,我的項(xiàng)目是在vue.config.js文件里面配置:
outputDir: '../${后端路徑}/dist',
assetsDir: 'static',
2)后端這樣配置靜態(tài)文件配置
router := gin.Default()
router.Static("/static", "dist/static") // 添加資源路徑
router.StaticFile("/", "dist/index.html") //前端接口
這樣只要啟動(dòng)后端代碼疚顷,訪問(wèn)根目錄就直接訪問(wèn)到靜態(tài)資源了
4.gin和beego的對(duì)比
因?yàn)閮蓚€(gè)都使用過(guò)旱易,說(shuō)一下個(gè)人對(duì)于兩者的優(yōu)缺點(diǎn)
gin:
優(yōu)點(diǎn):很輕量,很多的東西都可以自己定制化腿堤,避免了生成不必要的冗余代碼
缺點(diǎn):正是所有的東西都需要定制化阀坏,所以上手會(huì)比beego慢,所有的東西都要自己封裝
beego:
優(yōu)點(diǎn):一條初始化命令就能生成mvc所需要的代碼笆檀,只要關(guān)注自己的業(yè)務(wù)代碼就行
缺點(diǎn):比較厚重忌堂,會(huì)生成很多工程中不需要的代碼,例如:model里面生成的數(shù)據(jù)庫(kù)增刪改查很多時(shí)候就不適用酗洒,需要自己重寫(xiě)等
這只是剛開(kāi)始使用的時(shí)候士修,自己的項(xiàng)目并沒(méi)有測(cè)試復(fù)雜的場(chǎng)景枷遂,自己最初級(jí)的感受,沒(méi)有從兩個(gè)框架的性能做更好的對(duì)比李命,后續(xù)有時(shí)間登淘,可能對(duì)兩個(gè)框架性能各個(gè)方面
5.遇到的坑:
- gorm連接數(shù)據(jù)庫(kù)的時(shí)候?qū)腧?qū)動(dòng)的時(shí)候最開(kāi)始導(dǎo)入的是github.com/go-sql-driver/mysql,連接的時(shí)候不會(huì)報(bào)錯(cuò)封字,但是一操作數(shù)據(jù)庫(kù)就會(huì)報(bào)sql database is closed 錯(cuò)誤黔州,換成gorm自己的mysql驅(qū)動(dòng)就好了github.com/jinzhu/gorm/dialects/mysql