# gi-demo **Repository Path**: lin0716/gi-demo ## Basic Information - **Project Name**: gi-demo - **Description**: Gi Admin Pro 是一个基于 Vue3、Vite、TypeScript、Arco Design UI、Pinia、VueUse 的免费中后台模版,它使用了最新的前端技术栈,内置丰富的主题配置,有着极高的代码规范,基于mock实现的动态数据展示,开箱即用的模板,也可用于学习参考。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1531 - **Forks**: 440 - **Created**: 2021-12-03 - **Last Updated**: 2026-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: ArcoDesign, 后台管理系统, vue3, TypeScript, vite ## README
[](./LICENSE) ## 简介 **Gi Admin Pro** 是一个基于 Vue3、Vite、TypeScript、Arco Design Vue、Pinia、VueUse 等的免费中后台模版,它使用了最新的前端技术栈,内置丰富的主题配置,有着极高的代码规范,基于 mock 实现的动态数据展示,开箱即用的模板,也可用于学习参考。 > **Gi 前缀含义:** G:代表全局 i:代表我的 > > Gi 用来定义全局组件前缀,如 GiTable、GiForm、GiPageLayout等 ## 特性 - **最新技术栈**:使用 Vue3 / Vite 等前端前沿技术开发,使用高效率的 npm 包管理器 - **TypeScript**:应用程序级 JavaScript 的语言 - **主题**:丰富可配置的主题、暗黑模式 - **代码规范**:丰富的规范插件及极高的代码规范 ## 预览 | 平台 | 预览地址 | | ---------- | ---------------------------------------------------------- | | **github** | [Gi Admin Pro 预览地址](https://lin-97.github.io/gi-demo/) | | | 账号 | 密码 | | ------ | ----- | ------ | | 管理员 | admin | 123456 | | 用户 | user | 123456 | ## 代码仓库 | 平台 | 预览地址 | 仓库地址 | | ----------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | **gitee**(码云) | -- | Gitee 仓库地址 | | **github** | Gi Admin Pro 预览地址 | Github 仓库地址 | ## 项目示例图
## 安装使用
- 安装依赖
```bash
npm install
```
- 运行
```bash
npm run dev
```
- 打包
```bash
npm run build
```
## 开源作者
**Lin**
## 常见问题
**为什么安装依赖不成功?**
检查`node`版本,最好使用原生镜像`npm`
还原镜像
```
npm config set registry https://registry.npmjs.org/
```
**为什么选择 Arco 组件库,而不是 Element Plus?**
[Element Plus 对比 Arco design](https://juejin.cn/post/7294219581894705190)
**为什么全局组件使用前缀 Gi?**
全局组件设置了按需引入,使用前缀,方便和局部组件做区分
**为什么组件使用单词大写开头 (PascalCase)命名写法?**
本项目`.vue`文件名以及在模板使用中,均采用大写`开头 (PascalCase)`命名方式
参考 Vue2 官网-风格指南: https://v2.cn.vuejs.org/v2/style-guide/
组件命名:`单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)`
其他优点:方便搜索(横线连接 (kebab-case)对搜索没那么方便)
**为什么 css 类名推荐横线连接 (kebab-case)**
参考大部分大网站,都是这个命名规则,不使用: `.myClass`这种
**页面显示异常?**
**`页面必须要保留一个根元素!!!`**
**Vue3 权限管理对路由进行排序和格式化处理方式**
使用 **xe-utils** 这个 js 库,简化数据处理
[文章地址](https://juejin.cn/post/7301260557222805567)
**页面无法缓存?**
请检查页面是否配置了`name`,且名称是否与数据一致
```js
defineOptions({ name: 'AboutIndex' })
```
```js
{
path: '/about/index',
name: 'AboutIndex', // 检查name是否一致
component: () => import('@/views/about/index.vue')
}
```
## 项目规范
#### .vue 文件行数规范
一般来说,一个 .vue 文件行数建议不超过 **`400`** 行,超过建议组件化拆分
#### vue 相关的命名
```vue
```
```vue
```
```vue
```
```vue
```
#### 写法技巧
尽量使用三元表达式
```js
// 优化前
let isEdit = true
let title = ''
if (isEdit) {
title = '编辑'
} else {
title = '新增'
}
// 优化后
let title = isEdit ? '编辑' : '新增'
```
善用 includes 方法
```js
// 优化前
if (type === 1 || type === 2 || type === 3) {
}
// 优化后,此种方式在vue模板也可使用
if ([1, 2, 3].includes(type)) {
}
```
使用箭头函数简化函数
```js
// 优化前
function add(num1, num2) {
return num1 + num2
}
// 优化后
const add = (num1, num2) => num1 + num2
```
尽量减少 if else if
```vue
```
```js
// 优化前
const status = 200
const message = ''
if (status === 200) {
message = '请求成功'
} else if (status === 404) {
message = '请求出错'
} else if (status === 500) {
message = '服务器错误'
}
// 优化后
const status = 200
const messageMap = {
200: '请求成功',
404: '请求出错',
500: '服务器错误'
}
const message = messageMap[status]
```
如果函数参数超过两个,建议优化
```vue
```
#### 接口调用书写
**写法一**
不需要 loading,不需要错误打印的 情况
```vue
// getUserListApi 是一个 Promise 异步函数,Promise 最后只有 成功 / 失败 两种状态 // getUserListApi 是基于 axios
封装的,在 axios 响应拦截器做了处理 // 当 res.success === false 的时候 Promise.reject(),
也就异步失败,异步失败不会往下执行
```
**写法二**
需要 loading,需要错误打印的情况
```vue
```
**写法三**
需要 loading, 不需要错误打印(不进行错误处理)的情况
```vue
// catch 可以省略
```
#### 全局组件--命名规范
组件命名:**单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)**
可参考 Vue2 官网-风格指南: https://v2.cn.vuejs.org/v2/style-guide/
```
GiForm.vue
GiTable.vue
GiPageLayout.vue
```
#### 局部组件--命名规范
组件命名:**单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)**
可参考 Vue2 官网-风格指南: https://v2.cn.vuejs.org/v2/style-guide/
```
Pane1.vue
Pane2.vue
PaneQuota1.vue
PaneQuota2.vue
Step1.vue
Step2.vue
AddModal.vue
EditDrawer.vue
DetailModal.vue
```
#### 文件夹命名--命名规范 (采用中划线-)
1、文件名建议只使用小写字母,不使用大写字母
2、名称较长时采用半角连接符(-)分隔
```
home/index.vue
user/index.vue
user-detail/index.vue
```
#### 弹窗组件 Modal、抽屉组件 Drawer 的一般封装
```vue
#### 其他规范
可参考 Vue2 官网-风格指南: https://v2.cn.vuejs.org/v2/style-guide/ , 其中一些规范也可借鉴
可参考 **Gi Admin Pro** 源码,如有更好的规范建议,可以联系作者本人
## Vue 相关
Vue3 官网
Vue-Router
Vite
Pinia
## 插件推荐
Arco Design 组件库
Day.js 一个极简的 JavaScript 库,可以为现代浏览器解析、验证、操作和显示日期和时间 2K 大小
Lodash 一个一致性、模块化、高性能的 JavaScript 实用工具库
Xe-utils 一个 JavaScript 函数库、工具类
VueUse 一个 Vue3 Hooks 库
VueRequest 一个 Vue 请求库
V-Viewer 基于 viewer.js 的 vue 图像查看器组件,支持旋转、缩放等操作
Vue-Color-Kit 一个 vue3 颜色选择器组件
Vxe-Table
vue3-request 一个专为 Vue 3 设计的异步请求处理库,它通过统一的 useRequest Hook 和强大的插件生态,彻底简化了异步操作和 API 调用的复杂性
**其他**
VCalendar 日历组件
Vue Cal 日历组件
VueDraggablePlus 支持 Vue2 和 Vue3 的拖拽组件
## 推荐书籍
Vue 入门指南与实战案例
深入理解 TypeScript
前端宝典
Web 开发人员需要知道的 CSS 技巧
阮一峰 ES6
阮一峰 flex 布局
## 开源项目集合
Vue3 开源项目集合
React 开源项目集合
## 工具
菜鸟工具
代码生成图片
JSON-TO-ANY 对象转 ts 类型
在线三角形样式生成器
iTab
## 捐赠
