版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第Golang+Vue輕松構(gòu)建Web應(yīng)用的方法步驟目錄介紹項(xiàng)目結(jié)構(gòu)后端結(jié)構(gòu)前端結(jié)構(gòu)一些細(xì)節(jié)為什么使用JWT緩存實(shí)現(xiàn)請求限流從零開發(fā)前端運(yùn)行總結(jié)最近疫情在家,空閑時間比較多,整理下之前寫的Golang項(xiàng)目Weave,補(bǔ)充了一些功能,加了前端實(shí)現(xiàn)。作為一個Web應(yīng)用模板,也算是功能比較齊全了,現(xiàn)將開發(fā)過程中遇到的一些問題、項(xiàng)目特性總結(jié)下。
介紹
Weave是一個基于Go+Vue實(shí)現(xiàn)的Web應(yīng)用模板,支持前后端,擁有完整的認(rèn)證、存儲、RestfulAPI等功能。
后端基于Golang開發(fā),主要特性如下:
RestfulAPI,通過gin實(shí)現(xiàn),支持swaggerMVC架構(gòu)支持Postgres存儲,可以輕松替換為MySQL,使用gorm接入Redis緩存基于JWT認(rèn)證服務(wù)優(yōu)雅終止請求限速Docker容器管理,Websocket支持其他支持Prometheus監(jiān)控、格式化日志、PProf等
前端基于Vue開發(fā),使用ElementPlus組件庫
Vue3開發(fā),使用組合式API使用vite快速編譯支持WebShell,基于xtermjs圖表功能,基于echarts支持WindiCSS,減少CSS編寫
主要界面如下:
登錄界面
Dashboard界面
應(yīng)用界面
WebShell界面
項(xiàng)目結(jié)構(gòu)
項(xiàng)目組織如下:
├──Dockerfile
├──Makefile
├──README.md
├──bin
├──config#server配置
├──docs#swagger生成文件
├──document#文檔
├──go.mod
├──go.sum
├──main.go#server入口
├──pkg#server業(yè)務(wù)代碼
├──scripts#腳本
├──static#靜態(tài)文件
└──web#前端目錄
后端結(jié)構(gòu)
后端按照MVC架構(gòu)實(shí)現(xiàn),參考了社區(qū)一些最佳實(shí)踐,具體如下:
├──pkg
│├──common#通用包
│├──config#配置相關(guān)
│├──container#容器庫
│├──controller#控制器層,處理HTTP請求
│├──database#數(shù)據(jù)庫初始化,封裝
│├──metrics#監(jiān)控相關(guān)
│├──middleware#http中間件
│├──model#模型層
│├──repository#存儲層,數(shù)據(jù)持久化
│├──server#server入口,創(chuàng)建router
│└──service#邏輯層,處理業(yè)務(wù)
前端結(jié)構(gòu)
前端實(shí)現(xiàn)Vue3實(shí)現(xiàn),與一般Vue項(xiàng)目類似
web
├──README.md
├──index.html
├──node_modules
├──package-lock.json
├──package.json
├──public
│└──favicon.ico
├──src#所有代碼位于src
│├──App.vue#Vue項(xiàng)目入口
│├──assets#靜態(tài)文件
│├──axios#http請求封裝
│├──components#Vue組件
│├──main.js
│├──router#路由
│├──utils#工具包
│└──views#所有頁面
└──vite.config.js#vite配置
一些細(xì)節(jié)
為什么使用JWT
主要是為了方便服務(wù)橫向擴(kuò)展,如果基于Cookie+Session,Session只能保存在服務(wù)端,無法進(jìn)行負(fù)載均衡。另外通過api訪問,jwt可以放在HTTPHeader的BearerToken中。
當(dāng)使用Websocket時,不支持HTTPHeader,由于認(rèn)證統(tǒng)一在中間件中進(jìn)行,可以通過簡單通過cookie存儲,也可以單獨(dú)為Websocket配置認(rèn)證。
JWT不支持取消,可以通過在redis存入黑名單實(shí)現(xiàn)。
緩存實(shí)現(xiàn)
加入了緩存便引入了數(shù)據(jù)一致性問題,經(jīng)典的解決辦法是先寫數(shù)據(jù)庫再寫緩存(Cache-Aside模式),實(shí)現(xiàn)最終一致性,業(yè)務(wù)簡單的項(xiàng)目可以使用這種方法。
那先寫緩存行不行?如果同時有一個寫請求一讀請求,寫請求會先刪除緩存,讀請求緩慢未命中會將DB中的舊數(shù)據(jù)載入,可能會造成數(shù)據(jù)不一致。先寫數(shù)據(jù)庫則不會有這樣的問題,如果要實(shí)現(xiàn)先寫緩存,可以使用雙刪的辦法,即寫前后分別操作一次緩存,這樣處理邏輯會更復(fù)雜。如果不想侵入業(yè)務(wù)代碼,可以通過監(jiān)聽Binlog來異步更新緩存。
請求限流
限流使用了/x/time/rate提供的令牌桶算法,以應(yīng)對突發(fā)流量,可以對單個IP以及Server層面實(shí)現(xiàn)請求控制。
需要特別注意的是限流應(yīng)當(dāng)區(qū)別長連接與短連接,比如Weave中實(shí)現(xiàn)了容器exec接口,通過Websocket登錄到容器,不應(yīng)該影響其他正常請求。
從零開發(fā)前端
前端而言完全是毫無經(jīng)驗(yàn),選用了Vue3,主要是文檔比較全面適合新手。UI基于了ElementPlus,目前還是Beta版本,使用過程了也遇到了一些Bug,生產(chǎn)過程中不建議用,無奈的是目前Vue3好像也沒有比較成熟的UI庫。
Vue文檔以及示例很詳細(xì),上手也挺快。主要是CCS不熟悉,調(diào)整樣式上花了不少功夫,后來引入了WindiCSS,只編寫了少量的樣式,其他全部依賴WindiCSS實(shí)現(xiàn)。其他路由、請求、圖表參考對應(yīng)的文檔實(shí)現(xiàn)起來也很容易。
搭建了一個比較完整的管理平臺,自己還是挺滿意的,后面會不斷優(yōu)化,加一些其他特性。
運(yùn)行
后端本地運(yùn)行,需要依賴Docker,目前Makefile文件只在Linux下有效,其他平臺請自行嘗試
安裝數(shù)據(jù)庫postgres與redis,初始化庫
makeinit
makerun
前端使用vite編譯
cdweb
npm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2022年9月國開電大行管??啤渡鐣{(diào)查研究與方法》期末紙質(zhì)考試試題及答案
- 戶外環(huán)境中的緊急情況識別
- 勞資專管員考試試題及答案
- 飼草產(chǎn)品加工工崗前考核試卷及答案
- 新疆和田地區(qū)和田市輔警考試公安基礎(chǔ)知識考試真題庫及答案
- 四平市公務(wù)員遴選考試模擬試題及答案
- 醫(yī)師考核口腔試題及答案
- 教育綜合考前模擬卷(二)及答案
- 2025職業(yè)病危害及預(yù)防措施試題帶答案
- 音樂學(xué)小組考試題及答案
- 年終歲末的安全培訓(xùn)課件
- 中醫(yī)康復(fù)面試題目及答案
- 《人工智能導(dǎo)論》高職人工智能通識課程全套教學(xué)課件
- 中華醫(yī)學(xué)會麻醉學(xué)分會困難氣道管理指南
- 南京旅館住宿管理辦法
- 【香港職業(yè)訓(xùn)練局(VTC)】人力調(diào)查報告書2024-珠寶、鐘表及眼鏡業(yè)(繁體版)
- 急性呼吸衰竭的診斷與治療
- 客戶分配管理辦法管理
- 燃?xì)馊霊舭矙z培訓(xùn)
- 高中地理思政融合課《全球氣候變暖》
- 2025年中考語文一輪復(fù)習(xí):民俗類散文閱讀 講義(含練習(xí)題及答案)
評論
0/150
提交評論