1 Star 1 Fork 24

Tinnidy / ant-design-pro-vue3

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Ant Design Vue Pro

An out-of-box UI solution for enterprise applications as a Vue boilerplate. based on Ant Design of Vue
基于 [ Vite2 Vue3 Ant-Design-of-Vue2 TS](https://github.com/bailihuiyue/ant-design-pro-vue3) 实现的 [Ant Design Pro](https://pro.ant.design/)

预览图

首页

dashboard

夜间模式

dashboard

手机预览(最低支持iphone4)

项目下载和运行

#拉取项目代码
git clone https://github.com/bailihuiyue/ant-design-pro-vue3.git
cd ant-design-pro-vue3
#安装依赖
yarn install
#开发模式运行
yarn dev
#编译项目
yarn build

路由和菜单

基本结构

  • 路由文件 通过约定的语法根据在 router.ts 中配置路由,
    • 后端路由:通过defaultSettings.ts中的useAsyncRouter来设置是否启用,后端路由的格式在mockUtils.ts的userNav中。
    • 后端路由对应的component自动引入逻辑在batchImportFiles,会自动引入view下面的,vue文件作为页面
    • 普通路由参照exampleRouterMap
  • 菜单生成根据路由配置来生成菜单。菜单项名称,嵌套路径与路由高度耦合,具体配置内容参照Ant Design Pro Vue即可
  • 菜单跳转第三方网址的写法meta: { title: 'user.login.login', icon: 'account-book', target: 'http://www.baidu.com', blank: false }如果不想在新窗口打卡,请写明blank: false否则blank不写或者任意值均表示true

布局

  • 布局没有采用新版pro-layout插件,因为二次封装不利于个性化定制,而且pro-layout全是用jsx写的,所以还是使用了ant-pro 2.0的代码去修改

新增页面

  • 项目结构采用了类似ant design pro(react版本)的模块化结构,这样其他项目使用时直接复制文件夹即可,省去了在不同文件加分别找文件的痛苦了
  • 模板在template文件夹中 ├helper.ts 工具文件,等同于utils ├Index.vue 页面文件 ├service.ts 用于存放接口内容 ├types.ts 声明ts类型使用 ├ 国际化文件 │ ├cn.ts 中文 │ └en.ts 英文

和服务端进行交互

  • 项目使用了apite作为mock工具,文件写在了/mock文件夹中

业务图标

  • 图标除了 Ant Design Vue 自带的图标以外还使用了 vite-plugin-svg-icons 插件缓存svg,所有图标都放在src/assets/icons中

  • 想使用antv自带的图标请拷贝node_modules@ant-design\icons-svg\inline-svg到图标文件夹,会自动引入,名称为 文件夹名-文件名 例如a下的b.svg,SvgIcon组件传入name="a-b"即可:

    想获取所有已添加的icon:

    import ids from 'virtual:svg-icons-names';

    // => ['icon-icon1','icon-icon2','icon-icon3']

    这个插件是自动导入的,然后写到body上,如果图标过多觉得影响效率可以使用vite-plugin-vue-svg,手动引入一个个图标,demo在SvgIcon/manual中

    注意:svg文件的 标签上必须有 fill="currentColor" 字段,这样才能从外部的span等标签修改颜色,否则颜色不可变

国际化

  • 国际化使用了i18n 9的版本,由于该版本不识别.组成的key,所以程序用为了兼用使用replaceDot方法进行了一层循环,影响项目性能,并且禁止写成 'a':'xx','a.b':'xxxx'这种形式,因为无法生成对象,因此国际化不推荐写成 'list.search-list.articles': '搜索列表(文章)',推荐写成{a:{b:{c:'xxx'} } }

更换主题

  • 项目使用了vite-plugin-theme产生主题(css)
  • 目前可以支持自动切换主题,包括生产模式,
  • 通过调研,发现antv(element 有官方支持)目前主流切换主题有两种模式,并且都需要webpack/vite插件:
  1. 提前传入需要改变的颜色变量和值入例如:@primary-color:[#0094ff,#fff,#000等...],然后正在webpack编译时读取这些变量,然后静态生成这些css文件,
    • 优点,1.切换主题时只是加载不同的css文件,节约性能,
    • 缺点:1.耗费服务端空间,2.只能订制提前定义好的几种主题3.需要动态写入要修改的变量名入,@primary-color,@success-colo等,替换不完全
  2. 本项目使用了第二种方案,基于vite-plugin-theme插件,
    • 优点

      1. 可以任意在生产环境下选择主题颜色;
      
      2. 没有上一中法案的问题3,主题更改比较全面
    • 缺点:

      1. 由于是动态生成主题颜色,会有性能损耗
      2. 必须先找到antv主颜色的色号,否则替换主题功能失效,所以当antv主色更改时,需要代码中跟着一起更改,建议锁定antv版本,避免该问题;
      • 猜测原理,根据该插件说明和代码运行现象猜测,是以主颜色生成几个临近颜色然后对应找到整个项目中包含这些颜色的css样式然后对比替换比如原来是[a,b,c,d],现在是[1,2,3,4],那么a变成1,b变成2这样对应着替换,然后把提换完成的css写入到body底部,完成主题切换,不需要根据@primary-color这种定义去查找,这样靠颜色替换比较完整

黑夜模式目前使用了antv官网的黑夜css,采用动态添加link完成,不能适配所有页面,因此在darkModePatch.less写下一些兼容样式

权限管理

  • 权限管理在路由文件的meta.permission中设置,可以是一个数组,也可以不写,不写表示任意权限即可
  • 后端路由的话一般不用设置权限,传来什么就是什么

其他说明

  • 项目为了保持了ant vue pro样式一致,部分代码引用自ant vue pro,如global.less,部分插件和原理借鉴vben,感谢两位大大

  • 当前 <script setup lang="ts"></script>有bug,会导致.ts文件无法引入,报错 The requested module '/src/views/user/ty.ts' does not provide an export named 'FormState'

  • 文档里有一些注释,搭配vscode插件better-comments食用,风味更佳: 注释TODO: 待完成 bug:todo: bug info:todo: 发现的一些情况 warn:todo: 可能有bug ques:todo: 疑问 只有大写的'TODO'才表示未完成的功能,小写的todo只是为了方便搜索而已

已完成

  1. 注册登录vue3 语法
  2. 自动生成国际化(多层级文件夹使用.连接,比如tools.UserMenu)
  3. Storage(包含加密)
  4. vueuse响应式判断设备(手机,平板,pc)

TODO

  1. 输入命令,生成一个view的模板
  2. 加一个锁屏页面
  3. 使用reactiveState部分代替vuex
  4. 本想使用ant design一样的图标做首页的,但是用到了viser-vue插件,是vue2的,翻译成vue3 太麻烦了,回头再说吧
  5. 详尽的文档

浏览器兼容

Edge Chrome 等现代浏览器,目前只测试过Chrome,没有Mac所以Safari没有测试

落魄前端,在线要饭

下次一定?给个Star也行啊

空文件

简介

vue3 admin,ant design vue pro,vue admin,vue vite admin 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/tinnidy/ant-design-pro-vue3.git
git@gitee.com:tinnidy/ant-design-pro-vue3.git
tinnidy
ant-design-pro-vue3
ant-design-pro-vue3
main

搜索帮助