# 硅谷甄选_vue3 **Repository Path**: yys233/ggzs ## Basic Information - **Project Name**: 硅谷甄选_vue3 - **Description**: 这是一个Vue3项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-21 - **Last Updated**: 2024-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README | 文件/文件夹 | 说明 | | ------------------- | -------------- | | `src/store/module` | 用于存放小仓库 | | `src/permission.ts` | 路由鉴权 | | | | ## `svg`图标的使用 ```html ``` > 图标存放在`src/assets`目录下 封装全局组件 ```vue ``` 其他组件使用 ```html ``` ## `Element-plus` ### `layout`布局 - `el-row`:表示一行,一行有`24`个分栏 - `el-col`:分栏 - `span`:用于指定该分栏占多大,值为`number` - `xs`:响应式布局,当窗口宽度`<=768`时,将`span`的值更改为`xs`的值,值为`number` ```html 你好 ``` ### 表单 表单使用`el-form`包裹 每一个表单项要使用`el-form-item`包裹 ```html 登录 ``` #### 表单校验 1. 为`el-form`添加`:model=""`,值为收集表单的对象`(reactive)` 2. 为`el-form`添加`:rules=""`,值为规则对象 3. 为需要校验的表单的父元素`el-form-item`添加`prop=""`,值为该字段的名字(如`username`,`password`) 4. `prop`所指定的名字需要和`model`指定的对象的属性名相对应 5. 在`el-form`上,有一个`validate`方法,该方法返回一个`Promise`对象,返回值的状态,表明着整个表单是否校验成功。 5. 若想清除提示的错误信息,可以调用`el-form`上的`clearValidate`方法 代码示例 ```vue ``` ##### 自定义校验规则 若需要更精确的定义规则,则需要使用到`validator`这个配置项,值为一个函数,该函数接受三个参数 - `rule`:规则对象 - `value`:元素的文本内容 - `callback`:校验函数 - 若直接调用,表示校验成功 - 若传入一个错误对象,表示校验失败 ```ts // 规则对象 const rules = { username: [ // 每一个对象就是一套规则,当规则内的条件不满足时,就会弹出提示信息 { validator: validatorUsername, // 指定回调 trigger: "change", // 指定触发类型 }, ], password: [ { validator: validatorPassword, trigger: "change", }, ], }; // 自定义校验规则 function validatorUsername(_: any, value: string, callback: any) { if (value.length >= 5 && value.length <= 10) { callback(); // 校验通过 } else { callback(new Error("账号至少5位,最多10位")); // 校验失败 } } function validatorPassword(_: any, value: string, callback: any) { if (value.length >= 6 && value.length <= 15) { callback(); } else { callback(new Error("密码至少5位,最多15位")); } } ``` ### `Scrollbar` 滚动条 用于替换浏览器原生滚动条 ### 菜单 表单使用`el-menu`包裹 每一个菜单项要使用`el-menu-item`包裹 具体属性参考官网 ```html 首页 数据大屏 用户管理 角色管理 菜单管理 ``` ### 表格 表格组件使用`el-table`标签包裹,表格的每一列使用`el-table-column`包裹 ### `pagination` 分页器 ### `Dialog` 对话框 ## 项目的资源路径 贾成豪老师代码仓库地址:https://gitee.com/jch1011/vue3_admin_template-bj1.git 项目在线文档: 服务器域名:http://sph-api.atguigu.cn swagger文档: http://139.198.104.58:8209/swagger-ui.html http://139.198.104.58:8212/swagger-ui.html#/ echarts:国内镜像网站 https://www.isqqw.com/echarts-doc/zh/option.html#title http://datav.aliyun.com/portal/school/atlas/area_selector ## 笔记 ### 动态生成菜单 菜单需要通过路由动态生成,所以将路由存储在仓库中,方便读写 ```ts export const useUserStore = defineStore("User", () => { import { RouteRecordRaw } from "vue-router"; let menuRoutes = ref(constRoute); return { menuRoutes }; } ``` 存储数据后,由其父组件获取数据,再传递给`Menu`组件 为每一个路由项添加一个`title`用于展示 ```ts meta: { title: "layout", // 菜单标题 hidden: false, // 在菜单栏是否隐藏 icon: "Avatar", // 展示时的图标 }, ``` 最终的结构如下 ```html