# 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

Gi Admin Pro

star
[![license](https://img.shields.io/badge/license-MIT-green.svg)](./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 ``` 使用 **`模板里使用自定义组件:使用大写开头驼峰,双击好复制,对于搜索便利`** ```vue ``` #### CSS 命名规范 建议采用全小写,多单词使用-连接符(参考大部分网站,包括掘金,码云等,都是采用这个规则) 或者采用`BEM`命名规范 [BEM 命名规范](https://getbem.com/naming/) **BEM 命名规范** ```html
``` 其他: 位置 1: 使用 var(--margin) 全局 css 变量 位置 2:使用 var(--padding) 全局 css 变量 建议尽量使用全局 css 变量来开发,可以有效提高效率和团队协作 #### 其他规范 可参考 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 ## 捐赠