更新记录
1.0.0(2023-07-10) 下载此版本
上传
平台兼容性
Vue2 | Vue3 |
---|---|
√ | √ |
App | 快应用 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 |
---|---|---|---|---|---|---|
× | × | × | × | × | × | × |
钉钉小程序 | 快手小程序 | 飞书小程序 | 京东小程序 |
---|---|---|---|
× | × | × | × |
H5-Safari | Android Browser | 微信浏览器(Android) | QQ浏览器(Android) | Chrome | IE | Edge | Firefox | PC-Safari |
---|---|---|---|---|---|---|---|---|
× | × | × | × | × | × | × | × | × |
开发注意
基本事项
- 一个页面/组件文件夹下应包含三个基础文件:.scss、.vue、.ts 文件,便于代码区分及维护,页面文件命名格式:小驼峰,组件文件命名格式:大驼峰
- .vue 页面文件中
<script setup lang="ts" name="home">
中的 name,即原 vue2 的 name - ts 中同一个功能的放在一块
- scss 中相关通用颜色使用变量
- 公共样式/变量文件:
src/assets/css/global.scss
,有需要在这里写公共样式/变量,写之前先浏览原有的是否存在相关样式 - 字体图标文件:
src/assets/css/zoicon.css
。 - 项目环境配置文件:
src/utils/envionment.ts
,实现一次打包,不同环境域名下的环境自动切换,无需再配置类似.env.test
文件和不同环境不同打包命令方式 src/components
下的组件无需 import 导入页面代码中,框架自动引入。@mosowe2/js
包含了 web 系统开发的大部分功能函数,优先选择,额外的功能函数在src/utils/index.ts
中添加,注意写好注释,文档地址@mosowe2/element-plus-pro
包含了三个高级组件:ProForm
、ProTable
、Dialog
,在开发过程中优先选择,保持网站风格一致,有特殊例外不能满足的再寻他法,文档地址- 框架主界面布局组件在
src/window
文件夹下 - 左侧菜单栏路由支持 http / https 外链,点击时在新窗口打开连接
- 环境水印配置文件:
src/utils/watermark.js
,已在 App.vue 中配置
关于权限校验
权限校验有两个,声明都在/src/directives/permission.ts
文件:
- 一个是
v-permission
自定义指令,用于挂载 html 代码上,接收一个 string,值为当前元素权限值 - 另一个是
hasPermission
全局校验函数,使用方法为:
<!-- html中 -->
<div v-if="hasPermission('123')"></div>
<!-- 同 -->
<div v-permission="'123'"></div>
// ts中
const app = getCurrentInstance()?.appContext.config.globalProperties;
console.log(app?.hasPermission('123'));
关于 axios 配置说明
- axios 相关文件在
src/axios
,以下提及文件均在此文件夹下 /services/
文件夹下是相关功能页面接口函数声明文件,文件命名格式:语义化小驼峰,建议每个接口函数名以Api
结尾,避免与页面中函数名冲突apiCode.ts
该文件存放后端接口返回相关的 code 值apiNames.ts
该文件用户存放后端接口名称,支持接口名中带{}
格式,例:/crp/user/{id}/detail
,命名格式为:语义化小驼峰,同一功能模块的前置单词保持一致,写好注释axios.ts
该文件是对 axios 的get,post,delete,put,file
几种方法的封装,file
为文件上传,文件上传及数据导出方式参考/services/common.ts
axiosConfig.ts
该文件是对 axios 的统一封装,内部处理了相关的网络状态、接口异常 code 的处理流程- 在页面引用
/service/
进行接口联调时,建议使用 then/catch 方式,其中 then 返回的是 http status=200 且 api 返回 code 为成功时的值(即在 then 中无需判断 apiCode,因为这里面永远是无异常成功返回),其他均在 catch 中。 - 可使用
window.$cancelRequest()
方法终止接口请求
关于 pinia 状态库
/src/store
下是状态管理库文件,以下提及文件均在此文件夹下index.ts
文件用于状态库的配置,配置方式参考内部,不同功能的不要写在一个 hook 里面,写好注释,state 的变量格式为:PI_ 开头的语义化下划线全大写,actions 的方法命名格式为:set 开头的语义化小驼峰persistentData.ts
文件用于数据持久化,即刷新页面的时候,状态库从缓存取值`typing.d.ts
ts 的类型声明,状态库增删改的时候维护一下这个文件,在页面中使用的时候 ts 类型引用,格式:store开头 语义化小驼峰 Type结尾,建议 store 后面跟 defineStore() 的第一个参数,例:storeUserType
关于缓存
- 使用 sessions 缓存,@mosowe2/js 模块的 sessions 方法,比直接写 sessionStorage 方便,其提供:set,get,remove,clear 四种方法操作缓存
- 缓存命名格式:例本项目为 crp,所以格式为:crp-开头语义化小写短横线
关于自定义指令
- 自定义指令文件夹为:
/directives/
,文件夹下的每一个 ts 文件对应一个自定义指令,不要合并为一个 ts 文件,命名格式为:语义化小写短横线
关于自定义 hook
- 自定义指令文件夹为:
/hook/
,每一个 hook 的命名格式为:use 开头语义化小驼峰
使用中有其他问题及时提出,优化改进
框架说明:
vue3 语法糖
基于 web 管理系统的配置,基于 vite+vue3+ts。
优点:
- 光速启动
- 热模块替换
- 按需编译
脚手架功能
- elementPlus 组件 UI 库
- axios 网络数据交互
- pinia 状态管理
- vue-router 路由管理
- scss 预编译
- autoprefixer 自动补全
- typescript 语法
- window.$cancelRequest()取消请求
新
template 类型组件自动引入,无需 import,不是 template 类型组件的需要手动引入,如:Toast新
自动导入 vue3 HOOKS新
components 文件夹下的组件自动引入新
采用域名配置环境变量,即可以通过设置src/utils/envionment.ts
配置文件实现一次打包,不同环境域名下的环境自动切换,无需再配置类似.env.test文件新
element 自封装高级组件:@mosowe2/element-plus-pro,文档地址