From a3105db6667738ca14f444e7371ea462bc688fdd Mon Sep 17 00:00:00 2001 From: toesbieya <1647775459@qq.com> Date: Fri, 18 Sep 2020 22:55:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/.vuepress/config.js | 16 +-- docs/.vuepress/public/布局-设置面板.png | Bin 0 -> 18709 bytes docs/.vuepress/public/布局.png | Bin 0 -> 67399 bytes .../路由和菜单-首屏加载效果.png | Bin 0 -> 3005 bytes .../public/路由和菜单-骨架屏.png | Bin 0 -> 27706 bytes docs/frontend/README.md | 26 ++--- docs/frontend/components/abstract-table.md | 2 +- docs/frontend/components/region-selector.md | 4 +- docs/frontend/components/search-form.md | 2 +- docs/frontend/components/tree-select.md | 2 +- docs/frontend/components/upload-file.md | 2 +- docs/frontend/deploy.md | 6 +- docs/frontend/directives.md | 4 +- docs/frontend/icon.md | 2 +- docs/frontend/layout.md | 110 +++++++++++++++--- docs/frontend/new.md | 14 +-- docs/frontend/permission.md | 18 ++- docs/frontend/plugins.md | 2 +- docs/frontend/router.md | 66 +++++++---- docs/frontend/utils.md | 36 +++--- 20 files changed, 194 insertions(+), 118 deletions(-) create mode 100644 docs/.vuepress/public/布局-设置面板.png create mode 100644 docs/.vuepress/public/布局.png create mode 100644 docs/.vuepress/public/路由和菜单-首屏加载效果.png create mode 100644 docs/.vuepress/public/路由和菜单-骨架屏.png diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index e7eb629..f4591fb 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -24,7 +24,6 @@ module.exports = { 'start', { title: '前端', - collapsable: false, children: [ '/frontend/', '/frontend/icon', @@ -35,20 +34,18 @@ module.exports = { '/frontend/deploy', { title: '组件', - collapsable: false, children: [ - '/frontend/components/abstract-table', - '/frontend/components/region-selector', - '/frontend/components/search-form', - '/frontend/components/upload-file', - '/frontend/components/tree-select', + '/frontend/component/abstract-table', + '/frontend/component/region-selector', + '/frontend/component/search-form', + '/frontend/component/upload-file', + '/frontend/component/tree-select', ] }, '/frontend/directives', '/frontend/filters', { title: '全局方法', - collapsable: false, children: [ '/frontend/global-methods/bottom-tip', '/frontend/global-methods/guide', @@ -64,9 +61,8 @@ module.exports = { }, { title:'后端', - collapsable: false, children: [ - '/backend/', + '/backend/' ] } ] diff --git a/docs/.vuepress/public/布局-设置面板.png b/docs/.vuepress/public/布局-设置面板.png new file mode 100644 index 0000000000000000000000000000000000000000..b4273b29a1c3f6a7646238bee774d316e54c79f7 GIT binary patch literal 18709 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 literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/路由和菜单-首屏加载效果.png b/docs/.vuepress/public/路由和菜单-首屏加载效果.png new file mode 100644 index 0000000000000000000000000000000000000000..357597397bcdd2c19dd5c3d95eacbffac84d83c9 GIT binary patch literal 3005 zcmeHJdpOezA79czicUykymd}dk?16vndrPI%5`#0I+8Q2n%g!;bXrlIa+$m27Iw*u zVT^;wE!D7?YntKL%%#~FcD&E~*Zb#t-uKV*$M<=@&-eR$zkhr#&+~cgc*SP#?nApl zAkbbr+l$U1&<@A#(v|;idm`=Ed;tO}KCruZ!8IzEKZd;RBLsIY6~O7cJ3>0v)fxUL z-4dzPT0Lvs6PH@7O49C+r3Nb(w?Stseskd0l8sH=9~kMyXX+N6j-P~kWT`s!WFo-e zL{%p|urIHsmB?Cun}=HHE5N4qeoGxF?gDmI^)>Nk@)d<+0<&h+tcE+Ofy8xnc?TRnHxU)H{hHm%eyqaH;z^w? z#FOGZe2wa7aaNp)bauwX#(Wv~vfIVZm4XxbqEX58^5;T=1rK_&_MW_Q2&|6BQ0b_K z!`zWOtz}h5;Jyrh&)OSX`~E`|1S2Ee!6c}nI<9KEN=4V=INlc%@No4}y{%=I3lp;z zzs`aar{A z`XGzC*Z$#luW!0iEw#OROEYs%>~qjx*W@zgo-x9J;csVF1{56I61VGeg|UrhXCSgZ zvS}W?mp`kgx8|DZhN@#ML z^{=B+O>#~~$fT=^SDu=aH(|c8>`}h(bwva?O17Gji zpiRbKrii=j1+u7qRO}XF4l3>8CLSda40B^5I#EJZQM*8t!EY7|bI}GXtbe;XYg{3Y z^~^fze>LvP&_mYiKqiU4CPTDPa12t@67|cR-F^`)(2!Yh{aRuOnNIHz?w}So-uBglEfg$W6 zX~HjN#y&&Yey4(Ls%W+7$o{vqk@9?bq@In99BudVR8I0!NXV)HLk;!`U#MfaTunik zq#sL6$_EQ^Me)AbF^VuGR>n7bcLY z6zK1CJIE$3MB{*6lFp}gfm-SWlAI`=)Yf17LsO8?$%-}s%$PfF@^}pA*Y;|Yzpjxw z-02yUPgeup&DE_X6+PJ-0Pr0Ad70<*kM!N_^S6T@PFA{#{UZQaW_zZ%<5%5b%bp%p z^@tk*(ye7H5M1 zHL>${)Rn4d)^p?@TnEJclf{7cwD^7NfZZ$IX@1dxl<@^kEVCxN^c;yF0-w*RRIG?O z0M~CLl@gNwz(0d3n+%)PK z>WvF!x0_S_2G951Db|AGLhD2M-M5ZtBiCt<+Fj-Ks%~MTQL!lbiP*OE5}p{rw_d{d zk6r7&33RVmYqIeIcH>925(6&c^1RE=u7C>(CDIwEshr8@<-F^p(g8OCLAS%>vEW)) z!Gl7U_UZN$=02V-e!%HJ3_EB2ts=85+*yP0-D&4@y7$V;ZrtEHrwzE z(eo#FnDB#Fg)KA88O$K20XIE7SC@MG8>u)z>`Zyg6l^6`NWT5im4C%AV&D6@{&DWZR@(D5t4Ho!JEjrckYu)@3J(EUw|pu?Gx<# Vi1CNowqrTS?&m8P$yR>xe*&j9FvkD@ literal 0 HcmV?d00001 diff --git a/docs/.vuepress/public/路由和菜单-骨架屏.png b/docs/.vuepress/public/路由和菜单-骨架屏.png new file mode 100644 index 0000000000000000000000000000000000000000..d39b434db49c2afca1af6397d709c28b639dcfdf GIT binary patch literal 27706 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 VjFD}Z#Ir#Z9;(O{Ja`)LzW{v&0f_(r literal 0 HcmV?d00001 diff --git a/docs/frontend/README.md b/docs/frontend/README.md index be7f195..6c6505a 100644 --- a/docs/frontend/README.md +++ b/docs/frontend/README.md @@ -13,25 +13,16 @@ - 动态路由、动态菜单 -- 布局功能 +- 布局 - 异步路由组件loading骨架屏 - - 响应式的顶部菜单 - - 多级侧边栏 - - 面包屑 + - 多种导航模式 + - 仿ant design响应式的顶部菜单(虽然存在问题,目前推测是ele的问题) + - 无限级递归菜单 - 多页签(支持详情页缓存) - 支持移动端 - - 导航栏、侧边栏可隐藏 - - 侧边栏折叠时可显示上级 - Excel导出,支持多级表头、合并行 -- 组件 - - 用户导航 - - 行政区划选择器,支持树形和选项卡型 - - 封装的上传组件,整合七牛云,支持多种格式的文件预览 - - 封装了antd风格的dialog,可拖拽、超出可滚动 - - 手写签名 - - element-ui增强 - message支持分组、进度条功能 ``` @@ -45,24 +36,25 @@ │ ├── api # 数据请求集合 │ │ │── request.js # axios封装 │ ├── asset -│ │ │── icon # 项目所有svg icons +│ │ │── icon # 项目所有svg图标 │ │ └── style # 样式集合 │ ├── component # 公用组件 │ ├── config │ │ │── index.js # 基础配置项 │ ├── directive # 自定义指令集合 │ ├── filter # 自定义过滤器集合 -│ ├── globalMethod # 全局方法,使用this.$xx调用 +│ ├── globalMethod # 全局方法,已挂载到Vue原型上,使用this.$xx调用 │ ├── layout # 布局文件夹,包含了导航栏、侧边栏、多页签、全局页脚 │ ├── mixin # 公用混入 │ ├── plugin # 一些插件,均使用import()来动态引入 │ ├── router -│ │ │── module # 前端静态路由定义 +│ │ │── guardian # 路由守卫集合 +│ │ │── module # 前端定义的静态路由 │ │ │── define.js # 静态路由导出 │ │ │── index.js │ │ └── util.js │ ├── store # vuex配置 -│ ├── utils # 工具类 +│ ├── util # 工具类 │ ├── view # 路由页面集合 │ ├── App.vue │ └── main.js diff --git a/docs/frontend/components/abstract-table.md b/docs/frontend/components/abstract-table.md index b8dbb0f..623f50d 100644 --- a/docs/frontend/components/abstract-table.md +++ b/docs/frontend/components/abstract-table.md @@ -18,7 +18,7 @@ ### 引入: -`@/components/AbstractTable`。 +`@/component/AbstractTable`。 ### 使用: diff --git a/docs/frontend/components/region-selector.md b/docs/frontend/components/region-selector.md index 99850ec..ac2e57d 100644 --- a/docs/frontend/components/region-selector.md +++ b/docs/frontend/components/region-selector.md @@ -1,12 +1,12 @@ # 行政区划选择器 -目前分 `树型` 和 `选项卡型` 两种,由于 `树型` 不完善,所以这里只介绍 `选项卡型`,有兴趣的可以查看源码`@/components/RegionSelector/Tree`。 +目前分 `树型` 和 `选项卡型` 两种,由于 `树型` 不完善,所以这里只介绍 `选项卡型`,有兴趣的可以查看源码`@/component/RegionSelector/Tree`。 ### 引入: -`@/components/RegionSelector` +`@/component/RegionSelector` ### 使用: ```html diff --git a/docs/frontend/components/search-form.md b/docs/frontend/components/search-form.md index 42063f0..ee1e3be 100644 --- a/docs/frontend/components/search-form.md +++ b/docs/frontend/components/search-form.md @@ -7,7 +7,7 @@ ### 引入: -`@/components/SearchForm`,`@/components/SearchFormItem` +`@/component/SearchForm`,`@/component/SearchFormItem` ### 使用: ```html diff --git a/docs/frontend/components/tree-select.md b/docs/frontend/components/tree-select.md index cbe0245..ab04aa7 100644 --- a/docs/frontend/components/tree-select.md +++ b/docs/frontend/components/tree-select.md @@ -10,7 +10,7 @@ ### 引入: -`@/components/TreeSelect` +`@/component/TreeSelect` ### 使用: ```html diff --git a/docs/frontend/components/upload-file.md b/docs/frontend/components/upload-file.md index cdbc1e0..720b2c9 100644 --- a/docs/frontend/components/upload-file.md +++ b/docs/frontend/components/upload-file.md @@ -6,7 +6,7 @@ ### 引入: -`@/components/UploadFile` +`@/component/UploadFile` ### 使用: ```html diff --git a/docs/frontend/deploy.md b/docs/frontend/deploy.md index 19c1879..cba4f0a 100644 --- a/docs/frontend/deploy.md +++ b/docs/frontend/deploy.md @@ -1,6 +1,6 @@ # 构建和发布 -## 构建 +### 构建 当项目开发完毕,只需要运行一行命令就可以打包你的应用: ```shell script @@ -12,7 +12,7 @@ npm run build 如果需要指定`dist`目录等,则需要通过`vue.config.js`的`outputDir`进行配置。 -## 发布 +### 发布 如果静态文件不是部署在根目录下,比如想部署在 `/app` 下,那么需要将 `@/config/index.js` 中的 `contextPath` 改为 `/app/`。 @@ -24,7 +24,7 @@ npm run build `contextPath` 应始终以 `/` 开头,以 `/` 结束。 ::: -## 路由模式 +### 路由模式 项目提供了动态修改路由模式的功能,只需要修改 `@/config/index.js` 中的 `route.mode` 即可。 diff --git a/docs/frontend/directives.md b/docs/frontend/directives.md index a194416..baacd17 100644 --- a/docs/frontend/directives.md +++ b/docs/frontend/directives.md @@ -3,7 +3,7 @@ ## el-dialog拖拽 已全局注册,使用方式: -```js +```html ``` @@ -11,7 +11,7 @@ 从[quasar](https://quasar.dev/vue-directives/material-ripple)处搬运 已全局注册,使用方式: -```js +```html
``` 更多细节请根据quasar文档使用 diff --git a/docs/frontend/icon.md b/docs/frontend/icon.md index cf4a9cc..dc8139f 100644 --- a/docs/frontend/icon.md +++ b/docs/frontend/icon.md @@ -1,5 +1,5 @@ # 图标 -组件已全局注册,以``来使用。 +组件已全局注册,以``来使用。 当`icon`属性以`svg-`开头时,将渲染为`svg`,否则为`i`标签。 svg的引入与[vue-element-admin](https://panjiachen.github.io/vue-element-admin-site/zh/guide/advanced/icon.html)相同。 diff --git a/docs/frontend/layout.md b/docs/frontend/layout.md index 87770fd..0e59691 100644 --- a/docs/frontend/layout.md +++ b/docs/frontend/layout.md @@ -1,6 +1,10 @@ # 布局 -此布局是在vue-element-admin的基础上改造而来。 + + +文件目录:`@/layout/index.vue`。 + +此布局是在vue-element-admin的基础上改造而来,并且模仿and design pro实现了三种导航模式。 实际上这个布局算是二级路由,一级路由是App.vue,这就是为什么经常会看到路由会这么写的原因: ```json @@ -17,37 +21,109 @@ ] } ``` -`Layout` 填充到 `App.vue` 里的 ``,而真正的路由页面 `@/views/index` 则填充到 `Layout` 里的 ``。 +`Layout`(指`@/layout/index.vue`) 填充到 `App.vue` 里的 ``, +而真正的路由页面 `Page` 则填充到 `Layout` 里的 ``。 +当然,如果 `Layout` 中**没有写** ``,那么只会显示布局组件。 + +项目中没有用到 `Layout` 的页面只有 `@/router/define.js` 里的 `login`、`403`、`404`、`500`。 + +此外,在写`Layout`这个重型组件时,已经尽可能地进行独立化(拥有作为独立组件的可能性)。 +目前`Layout`的数据控制基本由`Vue.observable`实现(文件都在`@/layout/store`下), +仅有*未读消息数*、*用户信息*需要使用`vuex`。 + +## 侧边栏 + +文件目录:`@/layout/component/Aside/index.vue`。 +扩展了抽屉模式、自动隐藏这两个功能。 + +侧边栏**不会**在以下情形渲染: +- PC端下选择了顶部导航模式 +- 没有需要显示的菜单(仅不渲染dom) + +### 侧边栏LOGO + +文件目录:`@/layout/component/Aside/Logo.vue`。 +想更改logo地址的请修改 `@/config/index.js` 中的 `sidebarLogoUrl`,或者自己重写(需要注意侧边栏的折叠情况) + +### 侧边栏菜单 + +侧边栏菜单借助了 `@/component/menu/NavMenu/item.vue` 来渲染菜单项,具体配置请查看[路由配置](./router/.html)。 + +侧边栏菜单扩展了以下功能: +- 点击已激活的菜单可刷新路由 +- 折叠时可显示父级菜单 +- 菜单激活时自动滚动到可视区域 + +## 头部导航栏 + +文件目录:`@/layout/component/Header/component/Navbar/index.vue`。 -项目中没有用到 `Layout` 的页面只有 `@/router/define.js` 里的 `login`、`403`、`404` 这三个。 +### 汉堡包 -## 面包屑 +文件目录:`@/layout/component/Header/component/Navbar/Hamburger.vue`。 -摆设,放在那里充充数,正在研究是不是要移到页面里去,因为感觉和顶部菜单冲突。 +PC端的行为是切换侧边栏的折叠状态,移动端是切换侧边栏在抽屉模式下的显示状态。 +当侧边栏无需渲染时,汉堡包同样不会渲染。 -## 顶部菜单 +### 导航菜单 -响应式设计,能够使菜单部分隐藏或全部隐藏,参考了ant design。 -由路由配置项数组中的根节点组成,根据路由地址自动高亮。 +文件目录:`@/layout/component/Header/component/Navbar/HeadMenu.vue`。 -## 多页签 +头部导航菜单基本可以视为垂直版的侧边栏菜单,也具有*点击已激活的菜单可刷新路由*的功能,此外还扩展了以下功能: +- 仿ant design的响应式(目前还存在组件未更新的问题,初步判断是element-ui的问题) -增加了平滑滚动功能,增加了快捷键功能:`ctrl + → 下一个页签`、`ctrl + ← 上一个页签` +头部导航菜单**不会**在以下情形渲染: +- 是移动端 +- PC端下选择了侧边栏导航模式 + +### 设置面板 + + + +文件目录:`@/layout/component/Header/component/Navbar/SettingDrawer.vue`。 + +设置面板的数据与`Layout`的数据是相互独立的,这么做是为了`Layout`的独立性。 +在设置面板中修改数据后,会将配置写入localStorage。 +在面板mounted时,会将localStorage中的配置数据同步到`Layout`的store中 + +::: tip 注意 +设置面板中的主题色修改功能默认只在dev环境下生效,为啥呢,因为还在研究原理。 +想放开限制需要: +1. 修改`@/layout/component/header/navbar/component/SettingDrawer`中的`changeThemeColor`方法 +2. 修改`vue.config.js`中的`configureWebpack.plugins`配置项 +::: + +## 头部多页签 + +文件目录:`@/layout/component/Header/component/Tagsview/index.vue`。 + +在原版的基础上扩展了以下功能: +- 平滑滚动 +- 快捷键响应:`ctrl + → 下一个页签`、`ctrl + ← 上一个页签` ::: warning 注意 多页签在 启用 / 停用 之间切换时,之前缓存的页签实例会清空,也就是说再次打开时会是新的页面 ::: -## 侧边栏 +## 路由页面 + +文件目录:`@/layout/component/Page/index.vue`。 + +### 页头 + +文件目录:`@/layout/component/Page/PageHeader.vue`。 + +将原先在头部导航栏的面包屑挪到了这里(参考[dcat-admin](https://github.com/jqhph/dcat-admin))。 +这里说明一下面包屑的实现,是直接用$route.matched做的,没有考虑其他特殊情况。 + +不想显示页头的可以将路由配置项的`meta.pageHeader`设为`false`。 -重复点击菜单可刷新路由,折叠时可以选择是否在折叠菜单上显示父级。 +### 页脚 -侧边栏的滚动分两种情况,一种是整体的滚动,这是用 `` 做的。 -另一种是弹出菜单的滚动,这是用 `css` 做的,不用 `` 是因为没办法避免bug, -具体原因可以去看element-ui的 ` #handleMouseleave`。 +文件目录:`@/layout/component/Page/component/PageFooter.vue`。 -## 全局页脚 +只是一个静态dom,想咋改就咋改。 -想改啥去 `@/layout/component/Footer.vue` 里改,妥妥的。 +目前页脚全局显示,没有提供配置来隐藏。 diff --git a/docs/frontend/new.md b/docs/frontend/new.md index d0cf087..83e09bb 100644 --- a/docs/frontend/new.md +++ b/docs/frontend/new.md @@ -1,19 +1,19 @@ # 新增页面 -1. 把数据请求api创建出来,在 `@/api`下根据模块区分。 +1. 把数据请求api创建出来,在`@/api`下根据模块区分。 -2. 在 `@/views` 下创建路由页面,根据模块区分,页面务必以`Page.vue`结尾。 +2. 在`@/view`下创建路由页面,根据模块区分,页面务必以`Page.vue`结尾。 3. 如果页面过大过复杂,建议按功能拆分,放在当前页面的文件夹里。 -4. 独有的样式同样放在当前页面的文件夹里,能公用的提取到 `@/asset/style` 里。 +4. 独有的样式同样放在当前页面的文件夹里,能公用的提取到`@/asset/style`里。 5. 路由定义 - - 5.1 如果使用静态路由,在 `@/router/modules` 下创建路由文件,这个文件夹下的js会被`@/router/define.js`自动导出。 + - 5.1 如果使用静态路由,在`@/router/module`下参考预设路由创建文件,并在`@/router/module/index.js`中导出。 - 5.2 如果使用动态路由,需要在数据库或`系统管理 -> 菜单管理`中添加路由信息。 -6. 如果需要创建vuex模块,请在 `@/store/modules` 下创建,同样的,该文件夹下的js会被自动导出。 +6. 如果需要创建vuex模块,请在`@/store/module`下创建,该文件夹下的js会被自动导出。 -7. 如果页面之间存在公共组件,建议抽取出来放到 `@/component` 中 +7. 如果页面之间存在公共组件,建议抽取出来放到`@/component`中 -8. 如果页面之间存在公共逻辑,建议抽取出来放到 `@/mixin` 中 +8. 如果页面之间存在公共逻辑,建议抽取出来放到`@/mixin`中 diff --git a/docs/frontend/permission.md b/docs/frontend/permission.md index e5adbe1..4bd41ad 100644 --- a/docs/frontend/permission.md +++ b/docs/frontend/permission.md @@ -4,13 +4,12 @@ 鉴权方法为 `@/util/auth.js #auth`。 -鉴权前的准备工作: +### 鉴权前的准备工作 登陆成功后,后台返回用户所拥有的资源,构造出用户的权限树。 -之后用户在进入系统的任意一个非白名单内的路由时,会向后台获取 -所有的资源,构造出总权限树。 +之后用户在进入系统的任意一个非白名单内的路由时,会向后台获取所有的资源,构造出总权限树。 -鉴权流程: +### 鉴权流程 1. 如果用户是`admin`身份,那么直接放行。 @@ -20,7 +19,7 @@ 4. 否则拦截,如果是在路由的拦截器中则会跳转至403页面。 -当然前端的权限控制只是过滤一小部分,对接口的过滤工作还是得由后端完成。 +此流程与后端的流程行为一致。当然前端的权限控制只是过滤一小部分,对接口的过滤工作还是得由后端完成。 ### 如何移除权限控制? @@ -31,14 +30,13 @@ 首先只有两种情况前端会用RBAC: -**1.角色固定**: +**1. 角色固定**: 比如接口管理平台YAPI,角色就是固定的那三四个,前端可以直接写死,这种是最最适合的。 -**2.角色不固定,但是后端可以返回角色-资源的映射表:** +**2. 角色不固定,但是后端可以返回角色-资源的映射表:** -映射表规定了页面上所有的资源(路由页面、数据接口、按钮等等)被哪些角色所拥有,这样 -只需要凭一个用户的角色就能控制资源的访问。但是嗦实话,所有开源的纯vue管理后台全部 -不是这样搞的。 +映射表规定了页面上所有的资源(路由页面、数据接口、按钮等等)被哪些角色所拥有。 +这样只需要凭一个用户的角色就能控制资源的访问,但是绝大部分开源的纯vue管理后台都偷懒没做这部分的工作。 所以这里偷懒,直接把用户拥有的所有资源返回给前端。不过这也导致了不好用无状态的jwt来代替session。 diff --git a/docs/frontend/plugins.md b/docs/frontend/plugins.md index 3c6947c..2b86189 100644 --- a/docs/frontend/plugins.md +++ b/docs/frontend/plugins.md @@ -9,7 +9,7 @@ ## 图片压缩 -支持 `png`、`jpg` 两种格式的图片,使用方法参考 `@/views/example/developingTest/components/ImageCompressTest.vue`。 +支持 `png`、`jpg` 两种格式的图片,使用方法参考 `@/view/example/test/develop/component/ImageCompressTest.vue`。 ::: tip 由于是以 `worker` 的形式调用,所以需要准备 `cjpeg.min.js` 和 `pngquant.min.js`,这两个文件都放在项目的 `public`下。 diff --git a/docs/frontend/router.md b/docs/frontend/router.md index f4c3f17..1e753f1 100644 --- a/docs/frontend/router.md +++ b/docs/frontend/router.md @@ -1,10 +1,10 @@ -# 路由 +# 路由和菜单 项目中默认使用了前端预设的静态路由, -要使用后端返回的动态路由的话需要打开 `@/config/index.js` 中的 `route.useBackendDataAsRoute` 选项。 +要使用后端返回的数据来生成动态路由和菜单的话需要将 `@/config/index.js` 中的 `route.useBackendDataAsRoute` 设为 `true`。 -本项目不支持二级以上的路由,虽然路由配置可以无限级,但是实际上是二级路由的效果,因为在处理路由 -数据时会将二级以上的路由缩减为其叶子节点,也就是说如果有如下路由: +本项目不支持二级以上的路由,虽然路由配置可以无限级,但是实际上是二级路由的效果。 +因为在处理路由数据时会将二级以上的路由缩减为其叶子节点,也就是说如果有如下路由: ```js const routes = [ { @@ -48,21 +48,20 @@ const routes = [ } ] ``` -这样做的目的是为了避免多级路由缓存失效的问题,而且大部分情况下,三级路由(或更高)可以借助动态组件 -来实现同样的效果, +这样做的目的是为了避免多级路由缓存失效的问题,而且大部分情况下,三级路由(或更高)可以借助动态组件来实现同样的效果。 ## 路由配置项 -路由配置项不光参与路由的生成,也参与侧边栏的生成。 +本项目的路由配置除了`component`以外,与`vue-router`没有区别,仅在`meta`中添加了一些用于生成路由和菜单的字段。 -这里约定,配置项中只有根节点(即顶部菜单)的path以'/'开头。 -并且,只有根节点和叶子节点可以自定义component。 -目前根节点的component固定为`Layout` +这里约定,配置项中只有根节点(即顶部菜单)的path以'/'开头,并且,只有根节点和叶子节点可以自定义`component`。 -此外,所有根节点(经过缩减)的redirect属性都将设为其第一个子节点的fullPath,目前不支持自定义。 +目前根节点的`component`固定为`'Layout'`。 + +此外,所有根节点(经过降级缩减)的`redirect`属性都将设为其第一个子节点的`fullPath`,目前不支持自定义。 ::: warning 注意 -项目中,路由配置项中的component是字符串,比如组件路径是`@/views/test/indexPage.vue`,那么component可以是 +路由配置项中的`component`是字符串,比如组件路径是`@/view/test/indexPage.vue`,那么component可以是 `test/`、`test/index`、`test/indexPage`、`test/indexPage.vue`,具体可以看`@/router/util.js` 中的 `generateRoutes` 方法。 ::: @@ -73,18 +72,18 @@ const routes = [ | :------------: | :--------------------------------------------------: | :--------: | :---: | | title | 路由在侧边栏、面包屑、页签 | `string` | - | | dynamicTitle | 路由在面包屑、页签中的动态名称,参数为(to,from) | `function` | - | -| hidden | 是否在侧边栏中显示 | `boolean` | - | -| alwaysShow | 是否总是把只有一个子级的菜单以嵌套模式在侧边栏中展示 | `boolean` | - | +| hidden | 是否在菜单中隐藏 | `boolean` | - | +| alwaysShow | 是否总是把只有一个子级的菜单以嵌套模式展示 | `boolean` | - | | sort | 侧边栏的排序值,值越小越靠前 | `number` | 10000 | -| icon | 图标名,的icon属性 | `string` | - | +| icon | 图标名,``的icon属性 | `string` | - | | affix | 是否在多页签中固定显示 | `boolean` | - | -| noCache | true时缓存页面 | `boolean` | - | -| activeMenu | 侧边栏当前激活菜单的index | `string` | - | +| noCache | true时不缓存页面 | `boolean` | - | +| activeMenu | 当前激活菜单的index,因为激活菜单可能并非当前路由 | `string` | - | | noAuth | true时路由不需要鉴权 | `boolean` | - | | iframe | 需要打开的iframe的地址 | `string` | - | | usePathKey | 是否使用$route.path作为组件缓存的key | `boolean` | - | | useFullPathKey | 是否使用$route.fullPath作为组件缓存的key | `boolean` | - | -| commonModule | 共用组件的唯一标识 | `any` | - | +| commonModule | 共用组件的唯一标识,用于判断路由是否复用组件 | `any` | - | ::: tip 注意 路由meta上的noAuth、noCache会被子路由继承,优先使用子路由的值 @@ -113,20 +112,37 @@ const routes = [ 所以在 `router.beforeEach` 中做了判断,如果跳转前后的路由的 `meta.commonModule` 相同的话,那么借助 `/redirect` 跳转一次,从而避免组件复用的问题 ::: warning 注意 -如果使用 `name`,需要缓存的页面的 `name` 必须和路由的 `name` 一致 +如果使用`name`作为组件缓存的标识,那么缓存的页面的`name`必须和路由的`name`一致 ::: ## 路由白名单 -在 `@/router/index.js` 中有这么一句: +在 `@/router/guardian/security.js` 中有这么一句: ```js -const whiteList = transformWhiteList(['/login', '/register', '/404', '/403']) +const whiteList = ['/login', '/register', '/403', '/404', '/500'].map(url => pathToRegexp(url)) ``` -这个 `whiteList` 就是白名单,里面的值会被转为正则表达式,详细请查看[path-to-regexp文档](https://github.com/pillarjs/path-to-regexp)。 -被`whiteList` 匹配的路由不需要验证,直接放行。 +这个`whiteList`就是白名单,里面的值会被转为正则表达式,详细请查看[path-to-regexp文档](https://github.com/pillarjs/path-to-regexp)。 +被白名单匹配的路由不需要验证,直接放行。 + +## 路由守卫 + +所有路由守卫全部位于`@/router/guardian`中。 + +预设的路由守卫如下: +- nprogress进度条守卫 +- 防止路由复用组件的守卫 +- 修改页面标题信息的守卫 +- 登陆和权限守卫 +- 控制iframe显隐的守卫 + +::: warning 注意 +路由守卫是有先后顺序的,请查看`@/router/guardian/index.js` +::: ## 首屏加载效果 + + 想体验的可以把 `network` 设为 `slow 3g` 就可以在在线实例看到效果。 原理很简单,在 `index.html` 里有这么一段: @@ -142,6 +158,8 @@ const whiteList = transformWhiteList(['/login', '/register', '/404', '/403']) ## 骨架屏 + + 通常情况下,路由组件都是以 `import(...)` 的形式异步引入, 如果想让路由在加载异步组件时显示,可以使用以下方式: ```js @@ -160,7 +178,7 @@ component: lazyLoadView(import(...)) ``` 项目中具体的使用方式可以查看 `@/router/util #generateRoutes`方法。 -关于 `AsyncHandler` 的更多选项,可以查看[官方文档](https://cn.vuejs.org/v2/guide/components-dynamic-async.html#%E5%A4%84%E7%90%86%E5%8A%A0%E8%BD%BD%E7%8A%B6%E6%80%81) +关于 `AsyncHandler` 的更多选项,可以查看[官方文档](https://cn.vuejs.org/v2/guide/component-dynamic-async.html#%E5%A4%84%E7%90%86%E5%8A%A0%E8%BD%BD%E7%8A%B6%E6%80%81) ## 过渡动画 diff --git a/docs/frontend/utils.md b/docs/frontend/utils.md index 6fce687..9181f5c 100644 --- a/docs/frontend/utils.md +++ b/docs/frontend/utils.md @@ -36,9 +36,9 @@ const tree2 = createTree(arr2, 0, 'xid', 'ypid') ## 纯前端导出excel -依赖exceljs(实际上项目中还有xlsx-style的实现版本,见 `@/utils/excel/xlsx`,不过存在问题,所以弃用了)。 +依赖exceljs,项目中使用script引入。 ```js -import {json2workbook, exportExcelByJs} from '@/utils/excel' +import {json2workbook, workbook2excel} from '@/utils/excel' const column = [ {header: ['合并表头演示', '序号'], prop: 'no', merge: true}, @@ -52,33 +52,29 @@ const arr = [ const workbook = json2workbook(arr, column) -exportExcelByJs(workbook, '测试导出.xlsx') +workbook2excel(workbook, '测试导出.xlsx') ``` ### json2workbook(data, columns, merge) : workbook - `data` : `array`,json数组。 - - `columns` : `array`,列配置项数组,列配置详细如下: -```js -{ - header : string | array,表头名称,通过使用'-'分隔符或者传入array来实现多级表头 - prop : string,表头对应的 json 字段名称,如果为空,则该字段不会写入excel表格 - merge : boolean,是否需要合并,true的话会从上至下合并值相同的相邻单元格 - width : number,单元格宽度,默认 20 -} -``` + +| 参数 | 说明 | 类型 | 默认 | +| :----: | :-----------------------------------------------------------: | :------------: | :--: | +| header | 表头名称,通过使用'-'分隔符或者传入array来实现多级表头 | `string|array` | - | +| prop | 表头对应的 json 字段名称,如果为空,则该字段不会写入excel表格 | `string` | - | +| merge | 是否需要合并,true的话会从上至下合并值相同的相邻单元格 | `boolean` | - | +| width | 单元格宽度 | `number` | 20 | - `merge` : `object`,合并配置项,详细如下: -```js -{ - primaryKey : string,每行json数据的唯一标识字段名称 - orderKey : string,每行json数据的序号字段名称 -} -``` -### exportExcelByJs(workbook, filename) +| 参数 | 说明 | 类型 | 默认 | +| :--------: | :----------------------------: | :------: | :--: | +| primaryKey | 每行json数据的唯一标识字段名称 | `string` | - | +| orderKey | 每行json数据的序号字段名称 | `string` | - | -- `workbook`,json2workbook的返回结果 +### workbook2excel(workbook, filename) +- `workbook`,exceljs的workbook对象 - `filename` : `string`,导出的文件名称,需要带上.xlsx后缀