English | ç®€ä½“ä¸æ–‡
在线文档 : https://www.gin-vue-admin.com
从环境到部署教å¦è§†é¢‘
开呿•™å¦ (贡献者: LLemonGreen And Fann)
1.本项目从起æ¥åˆ°å¼€å‘åˆ°éƒ¨ç½²å‡æœ‰æ–‡æ¡£å’Œè¯¦ç»†è§†é¢‘教程
2.æœ¬é¡¹ç›®éœ€è¦æ‚¨æœ‰ä¸€å®šçš„golangå’Œvue基础
3.您完全å¯ä»¥é€šè¿‡æˆ‘们的教程和文档完æˆä¸€åˆ‡æ“ä½œï¼Œå› æ¤æˆ‘们ä¸å†æä¾›å…费的技术æœåŠ¡ï¼Œå¦‚éœ€æœåŠ¡è¯·è¿›è¡Œä»˜è´¹æ”¯æŒ
4.如果您将æ¤é¡¹ç›®ç”¨äºŽå•†ä¸šç”¨é€”,请éµå®ˆApache2.0å议并ä¿ç•™ä½œè€…技术支æŒå£°æ˜Žã€‚您需ä¿ç•™å¦‚下版æƒå£°æ˜Žä¿¡æ¯ï¼Œä»¥åŠæ—¥å¿—和代ç 䏿‰€åŒ…å«çš„版æƒå£°æ˜Žä¿¡æ¯ã€‚所需ä¿ç•™ä¿¡æ¯å‡ä¸ºæ–‡æ¡ˆæ€§è´¨ï¼Œä¸ä¼šå½±å“任何业务内容,如决定商用且必须剔除请è´ä¹°æŽˆæƒ
Gin-vue-admin是一个基于 vue å’Œ gin å¼€å‘çš„å…¨æ ˆå‰åŽç«¯åˆ†ç¦»çš„å¼€å‘基础平å°ï¼Œé›†æˆjwt鉴æƒï¼ŒåЍæ€è·¯ç”±ï¼ŒåЍæ€èœå•,casbin鉴æƒï¼Œè¡¨å•生æˆå™¨ï¼Œä»£ç 生æˆå™¨ç‰åŠŸèƒ½ï¼Œæä¾›å¤šç§ç¤ºä¾‹æ–‡ä»¶ï¼Œè®©æ‚¨æŠŠæ›´å¤šæ—¶é—´ä¸“注在业务开å‘上。
在线预览: http://demo.gin-vue-admin.com
测试用户å:admin
测试密ç :123456
Hi! é¦–å…ˆæ„Ÿè°¢ä½ ä½¿ç”¨ gin-vue-admin。
Gin-vue-admin æ˜¯ä¸€å¥—ä¸ºå¿«é€Ÿç ”å‘准备的一整套å‰åŽç«¯åˆ†ç¦»æž¶æž„å¼çš„å¼€æºæ¡†æž¶ï¼Œæ—¨åœ¨å¿«é€Ÿæå»ºä¸å°åž‹é¡¹ç›®ã€‚
Gin-vue-admin çš„æˆé•¿ç¦»ä¸å¼€å¤§å®¶çš„æ”¯æŒï¼Œå¦‚æžœä½ æ„¿æ„为 gin-vue-admin è´¡çŒ®ä»£ç æˆ–æä¾›å»ºè®®ï¼Œè¯·é˜…读以下内容。
-
issue 仅用于æäº¤ Bug 或 Feature 以åŠè®¾è®¡ç›¸å…³çš„内容,其它内容å¯èƒ½ä¼šè¢«ç›´æŽ¥å…³é—。
-
在æäº¤ issue 之å‰ï¼Œè¯·æœç´¢ç›¸å…³å†…容是å¦å·²è¢«æå‡ºã€‚
-
请先 fork 一份到自己的项目下,ä¸è¦ç›´æŽ¥åœ¨ä»“库下建分支。
-
commit ä¿¡æ¯è¦ä»¥
[文件å]: æè¿°ä¿¡æ¯
的形å¼å¡«å†™ï¼Œä¾‹å¦‚README.md: fix xxx bug
。 -
å¦‚æžœæ˜¯ä¿®å¤ bug,请在 PR ä¸ç»™å‡ºæè¿°ä¿¡æ¯ã€‚
-
åˆå¹¶ä»£ç 需è¦ä¸¤å维护人员å‚与:一人进行 review åŽ approve,å¦ä¸€äººå†æ¬¡ review,通过åŽå³å¯åˆå¹¶ã€‚
- node版本 > v16.8.3
- golang版本 >= v1.22
- IDE推è:Goland
使用 Goland
ç‰ç¼–辑工具,打开server目录,ä¸å¯ä»¥æ‰“å¼€ gin-vue-admin æ ¹ç›®å½•
# 克隆项目
git clone https://github.com/flipped-aurora/gin-vue-admin.git
# 进入server文件夹
cd server
# 使用 go mod 并安装goä¾èµ–包
go generate
# è¿è¡Œ
go run .
# 进入web文件夹
cd web
# 安装ä¾èµ–
npm install
# å¯åЍweb项目
npm run serve
go install github.com/swaggo/swag/cmd/swag@latest
cd server
swag init
执行上é¢çš„命令åŽï¼Œserver目录下会出现docs文件夹里的
docs.go
,swagger.json
,swagger.yaml
三个文件更新,å¯åЍgoæœåС之åŽ, 在æµè§ˆå™¨è¾“å…¥ http://localhost:8888/swagger/index.html å³å¯æŸ¥çœ‹swagger文档
使用VSCode
æ‰“å¼€æ ¹ç›®å½•ä¸‹çš„å·¥ä½œåŒºæ–‡ä»¶gin-vue-admin.code-workspace
,在边æ å¯ä»¥çœ‹åˆ°ä¸‰ä¸ªè™šæ‹Ÿç›®å½•:backend
ã€frontend
ã€root
。
在è¿è¡Œå’Œè°ƒè¯•ä¸ä¹Ÿå¯ä»¥çœ‹åˆ°ä¸‰ä¸ªtask:Backend
ã€Frontend
ã€Both (Backend & Frontend)
。è¿è¡ŒBoth (Backend & Frontend)
å¯ä»¥åŒæ—¶å¯åЍå‰åŽç«¯é¡¹ç›®ã€‚
在工作区é…ç½®æ–‡ä»¶ä¸æœ‰go.toolsEnvVars
å—æ®µï¼Œæ˜¯ç”¨äºŽVSCode
自身的go工具环境å˜é‡ã€‚æ¤å¤–在多go版本的系统ä¸ï¼Œå¯ä»¥é€šè¿‡gopath
ã€go.goroot
指定è¿è¡Œç‰ˆæœ¬ã€‚
"go.gopath": null,
"go.goroot": null,
- å‰ç«¯ï¼šç”¨åŸºäºŽ Vue çš„ Element 构建基础页é¢ã€‚
- åŽç«¯ï¼šç”¨ Gin 快速æå»ºåŸºç¡€restfulé£Žæ ¼API,Gin 是一个goè¯è¨€ç¼–写的Web框架。
- æ•°æ®åº“:采用
MySql
> (5.7) 版本 æ•°æ®åº“引擎 InnoDB,使用 gorm 实现对数æ®åº“的基本æ“作。 - 缓å˜ï¼šä½¿ç”¨
Redis
å®žçŽ°è®°å½•å½“å‰æ´»è·ƒç”¨æˆ·çš„jwt
令牌并实现多点登录é™åˆ¶ã€‚ - API文档:使用
Swagger
构建自动化文档。 - é…置文件:使用 fsnotify å’Œ viper 实现
yaml
æ ¼å¼çš„é…置文件。 - 日志:使用 zap 实现日志记录。
4.2 å‰ç«¯è¯¦ç»†è®¾è®¡å›¾ (æä¾›è€…:baobeisuper)
├── server
├── api (api层)
│ └── v1 (v1版本接å£)
├── config (é…置包)
├── core (æ ¸å¿ƒæ–‡ä»¶)
├── docs (swagger文档目录)
├── global (全局对象)
├── initialize (åˆå§‹åŒ–)
│ └── internal (åˆå§‹åŒ–内部函数)
├── middleware (ä¸é—´ä»¶å±‚)
├── model (模型层)
│ ├── request (å…¥å‚结构体)
│ └── response (出å‚结构体)
├── packfile (陿€æ–‡ä»¶æ‰“包)
├── resource (陿€èµ„æºæ–‡ä»¶å¤¹)
│ ├── excel (excel导入导出默认路径)
│ ├── page (表å•生æˆå™¨)
│ └── template (模æ¿)
├── router (路由层)
├── service (service层)
├── source (source层)
└── utils (工具包)
├── timer (定时器接å£å°è£…)
└── upload (oss接å£å°è£…)
web
├── babel.config.js
├── Dockerfile
├── favicon.ico
├── index.html -- 主页é¢
├── limit.js -- 助手代ç
├── package.json -- 包管ç†å™¨ä»£ç
├── src -- æºä»£ç
│ ├── api -- api 组
│ ├── App.vue -- 主页é¢
│ ├── assets -- 陿€èµ„æº
│ ├── components -- 全局组件
│ ├── core -- gva 组件包
│ │ ├── config.js -- gva网站é…置文件
│ │ ├── gin-vue-admin.js -- 注册欢迎文件
│ │ └── global.js -- 统一导入文件
│ ├── directive -- v-auth 注册文件
│ ├── main.js -- 主æ–
8000
‡ä»¶
│ ├── permission.js -- 路由ä¸é—´ä»¶
│ ├── pinia -- pinia 状æ€ç®¡ç†å™¨ï¼Œå–代vuex
│ │ ├── index.js -- 入壿–‡ä»¶
│ │ └── modules -- modules
│ │ ├── dictionary.js
│ │ ├── router.js
│ │ └── user.js
│ ├── router -- 路由声明文件
│ │ └── index.js
│ ├── style -- å…¨å±€æ ·å¼
│ │ ├── base.scss
│ │ ├── basics.scss
│ │ ├── element_visiable.scss -- æ¤å¤„å¯ä»¥å…¨å±€è¦†ç›– element-plus æ ·å¼
│ │ ├── iconfont.css -- é¡¶éƒ¨å‡ ä¸ªiconçš„æ ·å¼æ–‡ä»¶
│ │ ├── main.scss
│ │ ├── mobile.scss
│ │ └── newLogin.scss
│ ├── utils -- 方法包库
│ │ ├── asyncRouter.js -- 动æ€è·¯ç”±ç›¸å…³
│ │ ├── btnAuth.js -- åŠ¨æ€æƒé™æŒ‰é’®ç›¸å…³
│ │ ├── bus.js -- 全局mitt声明文件
│ │ ├── date.js -- 日期相关
│ │ ├── dictionary.js -- 获å–å—典方法
│ │ ├── downloadImg.js -- 下载图片方法
│ │ ├── format.js -- æ ¼å¼æ•´ç†ç›¸å…³
│ │ ├── image.js -- 图片相关方法
│ │ ├── page.js -- è®¾ç½®é¡µé¢æ ‡é¢˜
│ │ ├── request.js -- 请求
│ │ └── stringFun.js -- å—符串文件
| ├── view -- 主è¦view代ç
| | ├── about -- 关于我们
| | ├── dashboard -- 颿¿
| | ├── error -- 错误
| | ├── example --ä¸Šä¼ æ¡ˆä¾‹
| | ├── iconList -- icon列表
| | ├── init -- åˆå§‹åŒ–æ•°æ®
| | | ├── index -- 新版本
| | | ├── init -- 旧版本
| | ├── layout -- layout约æŸé¡µé¢
| | | ├── aside
| | | ├── bottomInfo -- bottomInfo
| | | ├── screenfull -- å…¨å±è®¾ç½®
| | | ├── setting -- 系统设置
| | | └── index.vue -- base 约æŸ
| | ├── login --登录
| | ├── person --个人ä¸å¿ƒ
| | ├── superAdmin -- 超级管ç†å‘˜æ“作
| | ├── system -- 系统检测页é¢
| | ├── systemTools -- 系统é…置相关页é¢
| | └── routerHolder.vue -- page å…¥å£é¡µé¢
├── vite.config.js -- vite é…置文件
└── yarn.lock
- æƒé™ç®¡ç†ï¼šåŸºäºŽ
jwt
å’Œcasbin
实现的æƒé™ç®¡ç†ã€‚ - æ–‡ä»¶ä¸Šä¼ ä¸‹è½½ï¼šå®žçŽ°åŸºäºŽ
七牛云
,阿里云
,腾讯云
çš„æ–‡ä»¶ä¸Šä¼ æ“作(请开å‘自己去å„个平å°çš„申请对应token
或者对应key
)。 - 分页å°è£…:å‰ç«¯ä½¿ç”¨
mixins
å°è£…分页,分页方法调用mixins
å³å¯ã€‚ - 用户管ç†ï¼šç³»ç»Ÿç®¡ç†å‘˜åˆ†é…用户角色和角色æƒé™ã€‚
- 角色管ç†ï¼šåˆ›å»ºæƒé™æŽ§åˆ¶çš„主è¦å¯¹è±¡ï¼Œå¯ä»¥ç»™è§’色分é…ä¸åŒapiæƒé™å’Œèœå•æƒé™ã€‚
- èœå•管ç†ï¼šå®žçŽ°ç”¨æˆ·åŠ¨æ€èœå•é…置,实现ä¸åŒè§’色ä¸åŒèœå•。
- api管ç†ï¼šä¸åŒç”¨æˆ·å¯è°ƒç”¨çš„api接å£çš„æƒé™ä¸åŒã€‚
- é…置管ç†ï¼šé…置文件å¯å‰å°ä¿®æ”¹(在线体验站点ä¸å¼€æ”¾æ¤åŠŸèƒ½)。
- æ¡ä»¶æœç´¢ï¼šå¢žåŠ æ¡ä»¶æœç´¢ç¤ºä¾‹ã€‚
- restful示例:å¯ä»¥å‚è€ƒç”¨æˆ·ç®¡ç†æ¨¡å—ä¸çš„示例API。
- å‰ç«¯æ–‡ä»¶å‚考: web/src/view/superAdmin/api/api.vue
- åŽå°æ–‡ä»¶å‚考: server/router/sys_api.go
- 多点登录é™åˆ¶ï¼šéœ€è¦åœ¨
config.yaml
ä¸æŠŠsystem
ä¸çš„use-multipoint
修改为true(需è¦è‡ªè¡Œé…ç½®Rediså’ŒConfigä¸çš„Redis傿•°ï¼Œæµ‹è¯•阶段,有bugè¯·åŠæ—¶å馈)。 - åˆ†ç‰‡ä¸Šä¼ ï¼šæä¾›æ–‡ä»¶åˆ†ç‰‡ä¸Šä¼ å’Œå¤§æ–‡ä»¶åˆ†ç‰‡ä¸Šä¼ åŠŸèƒ½ç¤ºä¾‹ã€‚
- 表å•生æˆå™¨ï¼šè¡¨å•生æˆå™¨å€ŸåŠ© @Variant Form 。
- 代ç 生æˆå™¨ï¼šåŽå°åŸºç¡€é€»è¾‘以åŠç®€å•curd的代ç 生æˆå™¨ã€‚
https://www.yuque.com/flipped-aurora
内有å‰ç«¯æ¡†æž¶æ•™å¦è§†é¢‘。如果觉得项目对您有所帮助å¯ä»¥æ·»åŠ æˆ‘çš„ä¸ªäººå¾®ä¿¡:shouzi_1994,欢迎您æå‡ºå®è´µçš„需求。
(1)手把手教å¦è§†é¢‘
(2)åŽç«¯ç›®å½•结构调整介ç»ä»¥åŠä½¿ç”¨æ–¹æ³•
(3)golang基础教å¦è§†é¢‘
bilibili:https://space.bilibili.com/322210472/channel/detail?cid=108884
(4)gin框架基础教å¦
bilibili:https://space.bilibili.com/322210472/channel/detail?cid=126418&ctype=0
(5)gin-vue-admin 版本更新介ç»è§†é¢‘
bilibili:https://www.bilibili.com/video/BV1kv4y1g7nT
微信 |
---|
防æ¢å¹¿å‘Šè¿›ç¾¤ï¼Œæ·»åŠ å¾®ä¿¡ï¼Œè¾“å…¥ä»¥ä¸‹ä»£ç æ‰§è¡Œç»“果(请勿转ç 为string)
str := "5Yqg5YWlR1ZB5Lqk5rWB576k"
decodeBytes, err := base64.StdEncoding.DecodeString(str)
fmt.Println(decodeBytes, err)
感谢您对gin-vue-admin的贡献!
å¦‚æžœä½ è§‰å¾—è¿™ä¸ªé¡¹ç›®å¯¹ä½ æœ‰å¸®åŠ©ï¼Œä½ å¯ä»¥è¯·ä½œè€…å–饮料 🹠点我
如果您将æ¤é¡¹ç›®ç”¨äºŽå•†ä¸šç”¨é€”,请éµå®ˆApache2.0å议并ä¿ç•™ä½œè€…技术支æŒå£°æ˜Žã€‚