tips: 本项目大部分按照以下说明编写,不符合以下原则的部分,原因是
vue-admin-template
作者自身的编写特点,本人并未改动.
建议遵循该项目规则编写,当然如果觉得自己的规则更让你编写舒适的话,请无视建议,专注于项目说明本身
本项目选用vue-admin-template为模板
本项目地址
参考variables.scss
├── build # 构建相关
├── mock # 项目mock 模拟数据
├── plop-templates # 基本模板
├── public # 静态资源
│ │── favicon.ico # favicon图标
│ └── index.html # html模板
├── src # 源代码
│ ├── api # 所有请求
│ ├── assets # 主题 字体等静态资源
│ ├── components # 全局公用组件
│ ├── directive # 全局指令
│ ├── filters # 全局 filter
│ ├── icons # 项目所有 svg icons
│ ├── lang # 国际化 language
│ ├── layout # 全局 layout
│ ├── router # 路由
│ ├── store # 全局 store管理
│ ├── styles # 全局样式
│ ├── utils # 全局公用方法
│ ├── vendor # 公用vendor
│ ├── views # views 所有页面
│ ├── App.vue # 入口页面
│ ├── main.js # 入口文件 加载组件 初始化等
├── . # 环境变量配置
├── .eslintrc.js # eslint 配置项
├── .babelrc # babel-loader 配置
├── .l # 自动化CI配置
├── fig.js # vue-cli 配置
├── fig.js # postcss 配置
└── package.json # package.json
本项目使用的图片 assets/img
本项目使用的图标 icons/svg
图标的具体使用查看 SvgIcon
本项目采用scss编写样式
.changeLoginEle
的父类名,则为局部修改,该例即为修改 login 页面的样式,否则即为修改全局 element 样式<div class="dot bg-main"></div>
.dot {width: 10px;height: 10px;border-radius: 50%;
}
.bg-main {background: #ccc;
}
├── layout # 布局页面
│ ├── index.vue # 主页面
│ ├── mixins # mixin方法
│ ├── components # 子组件
│ │ ├── layout-header # 顶部导航栏
│ │ │ ├── index.vue # 顶部导航栏主页面
│ │ │ ├── components # 顶部导航栏子组件
│ │ │ │ ├── header-scroll-pane.vue # 标签导航栏滚动
│ │ │ │ ├── header-tags-view.vue # 标签导航栏
│ │ ├── layout-main # 主体内容区
│ │ ├── layout-sidebar # 侧边导航栏
│ │ │ ├── index.vue # 侧边导航栏主页面
│ │ │ ├── components # 侧边导航栏子组件
│ │ │ │ ├── sidebar-item.vue # 侧边导航栏子页面
│ │ │ │ ├── sidebar-submenu.vue # 侧边导航菜单
│ │ │ │ ├── sidebar-link.vue # 侧边导航菜单链接
│ │ │ │ ├── sidebar-logo.vue # 侧边导航栏Logo
sidebar
sidebar-submenu
为一级菜单导航,采用了递归组件,判断了只有一个子菜单和多个子菜单的表现形式sidebar-item
为子菜单导航main
<keep-alive>
是否需要缓存header
包括全局可通用的组件,有面包屑,表格,图标,选择器等,详细说明参考各组件
通用组件全部以文件夹+index.vue
形式编写,文件夹名大写
v-组件名
的形式<v-select :data="data" @change="handleChange" :settings="setings" />
通用组件不要使用样式类写法,保证通用组件的独立性
参考 vue-admin-template
建议:当能够使用父子组件通信时,请不要使用 vuex
采用模块化编写, 使用 async/await
异步请求
各模块的 state 变量都最终通过父 getters 导出,因而各页面访问 state,不需要操作 state,只需要操作 getters,例如:
//getters.js
export default {user:state=>state.app.user
}
// xx.vue
import { mapGetters } from 'vuex';
computed:{ ...mapGstters['user'] }
permission.js
路由验证,控制权限,配合utils/permissionrequest.js
拦截请求,处理异常,配合apiapp.js
侧边导航栏相关user.js
用户相关(包括登录,信息,角色等)全局使用的通用方法
全局
filter
和directive
也被归于此类
auth.js
持久化存储相关date.js
日期格式相关function.js
全局 vue 方法request.js
请求相关validate.js
验证相关permission.js
权限相关全局通用常量配置
每一个模块都会对应侧边的路由,因而会分为单菜单模块和多菜单模块
统一使用英文小写,子组件以模块名-子组件名
的形式
建议模块名以单词形式,小写,单词英文过长时,子组件可缩略为 3-5 个字母,
login├──login-main.vuesettings├──set-main.vue// 不建议使用System-settingsSettingsSettings-main.vue //等
子组件的 html 名需要以<login-main>
形式,不要用大写或者单词 ,防止和 html 标签名冲突
<login-main><!-- 以下不建议使用 --><loginMain><main><main><LoginMain></LoginMain></main></main></loginMain
></login-main>
constant.js
文件用来存放该模块的常量
components
存放该页面的业务子组件
mixin.js
存放组件之间完全相同的逻辑
index.vue
模块路由根组件,有且只有一个
xx.vue
同属于该模块的其他组件,通常为跳转的详情页,操作页
每个模块只会有一个
components
,若子组件也有其子组件,将会并列
├── `404` # 错误
├── `attendance` # 考勤系统
├── `login` # 登录
├── `settings` # 系统设置
│ ├── `permission` # 权限管理
未完待续…
本文发布于:2024-02-01 06:27:48,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170674007034548.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |