gin初學(xué)者如何搭建一個(gè)簡單的項(xiàng)目

項(xiàng)目需要搭建一個(gè)web前后端,前端使用了vue-admin-template框架,因?yàn)檫@個(gè)不屬于新學(xué)習(xí)的內(nèi)容,這次按下不表,該文章主要是記錄怎么搭建gin后臺(tái)。后端本來用django已經(jīng)搭建完成了,但是基于一直想學(xué)習(xí)一下gin框架,趁著這次機(jī)會(huì),搭建一下gin。因?yàn)橄惹坝眠^beego,搭建的過程中最好跟beego對(duì)比一下。剛有這個(gè)想法,有幾個(gè)疑問,需要逐一了解。gin中文文檔

  1. gin的mvc框架如何體現(xiàn),項(xiàng)目的目錄會(huì)很明顯的體現(xiàn)出來么,類似beego的model, controller等,需要確定好項(xiàng)目的整體布局

2.因?yàn)檫@次的項(xiàng)目需要連接數(shù)據(jù)庫,并操作數(shù)據(jù)庫表,gin有自己的orm么

3.前端怎么整合到后臺(tá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框架

  1. gorm本身不支持?jǐn)?shù)據(jù)庫表生成go struct文件,需要借助其余工具(據(jù)說xorm可以)
    2)日志設(shè)置:https://www.flysnow.org/2017/05/06/go-in-action-go-log.html這個(gè)日志不是很好,不符合太過于冗余,后續(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)后端代碼,訪問根目錄就直接訪問到靜態(tài)資源了

4.gin和beego的對(duì)比

因?yàn)閮蓚€(gè)都使用過,說一下個(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ù)庫增刪改查很多時(shí)候就不適用,需要自己重寫等
這只是剛開始使用的時(shí)候,自己的項(xiàng)目并沒有測(cè)試復(fù)雜的場景,自己最初級(jí)的感受,沒有從兩個(gè)框架的性能做更好的對(duì)比,后續(xù)有時(shí)間,可能對(duì)兩個(gè)框架性能各個(gè)方面

5.遇到的坑:

  1. gorm連接數(shù)據(jù)庫的時(shí)候?qū)腧?qū)動(dòng)的時(shí)候最開始導(dǎo)入的是github.com/go-sql-driver/mysql,連接的時(shí)候不會(huì)報(bào)錯(cuò),但是一操作數(shù)據(jù)庫就會(huì)報(bào)sql database is closed 錯(cuò)誤,換成gorm自己的mysql驅(qū)動(dòng)就好了github.com/jinzhu/gorm/dialects/mysql
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容