vue-cli 3.0 vue中后台开发模板
项目启动
npm run dev
其他常用命令:
安装插件
npm install // 需要外网环境
项目打包
npm run build
分析打包体积
npm run analyz
新建组件 模板页面
npm run com
新建views中的页面
npm run page
- src // 开发目录
- api // 接口管理目录
- assets // 图片资源目录
- mixins // 组件内可复用
- utils // 公共资源目录(函数库、请求封装)
- env.js // 环境配置
- components // 公共组件目录
- plugins // 插件目录(ElementUI配置)
- fliters // 公共过滤器
- router // 路由
- store // Vuex管理目录
- style // 公共样式目录
- views // 页面目录
路由配置目录:src/router/index.js
// 有权限路由
export const constantRoutes = [
// ...
]
// 无权限路由
export const asyncRoutes = [
// ..
]
常用配置参数:
/**
* 路由配置
* name:'router-name' 路由名称 必填 不能与其他路由冲突
* path:'router-path' 路由路径 必填 不能与其他路径冲突
* hidden: true 是否在侧边栏隐藏,默认不隐藏
* redirect: noRedirect 重定向路由 一般在有会默认填写为子路由的第一个path
* meta : {
title: 'title' 侧栏显示的title名称
icon: 'svg-name' 侧栏中显示的icon名称
auth: true 该页面权限标识
}
*/
配置完成后可需新建所配置页面
具体配置可参考 src/router/index.js
后续可以使用name名称进行组件参数传递
后续会补充相关模板页面。。。
export default {
name: 'Role'
}
若赋值 相关页面请删除无用的函数
两个简单的相关命令:
新建组件 模板页面
npm run com
新建views中的页面
npm run page
接口配置地址统一在 src/api 目录下, 根据模块名新建
比如: 角色管理页面 页面地址 /views/system/role
则相关api地址为 api/system/role.js中
下面列出配置示例:
import Request from '@/utils/request'
export const getRoleList = data => Request.get('/system/role/list', data)
export const getRoleListById = ({ id, ...params }) => Request.get(`/system/${id}/list`, params)
Request 中已封装 get,post,put,delete 等相关方法,根据要求自行引用
关于接口对接:
在页面中引入相关接口:
import { getRoleList } from '@/api/system/role'
// ...
methods: {
/**
* async await 方式 推荐
*/
async getListData () {
const data = {
current: this.currentPage,
pageSize: this.pageSize,
}
const res = await this.listApi(data)
this.tableData = res.items
},
/**
* promise 方式
*/
async getListData () {
const data = {
current: this.currentPage,
pageSize: this.pageSize,
}
this.listApi(data).then(res => {
this.tableData = res.items
})
},
}
// ...
在接口请求中, 可使用 async/await
和 promise
两种方式, 推荐使用 async/await
方式
封装组件可查看 /src/mixins/pagination.js
使用:
在组件中引用,并注册
import { pagination } from '@/mixins'
export default {
// ...
mixins: [pagination], // 封装分页相关函数
// ...
}
引用组件中
参数 | 要求 |
---|---|
listApi | 必填 存放需要请求的地址 |
searchForm | 必填 用于页面中筛选表单的数据存放,也可作为接口数据直接发给后台 |
listApiParmas | 非必填 在后台传递参数,searchForm不能满足需要转数据格式时,作为接口数据直接发给后台 |
在初始化调用:
一般情况:
mounted () {
this.getListData()
}
复杂情况,参数需要处理格式后调用分页
data () {
return {
listApi: getRoleList, // 列表请求地址
searchForm: {
// ...
},
listApiParmas: {} // 必填,处理后的参数存放
}
},
mounted () {
this.handleSearch()
},
methods: {
handleSearch() {
// 此处处理数据
// 并将值扶着给 this.listApiParmas
this.listApiParmas = ...
this.getListData()
}
}
相关例子可参考: 资源管理 views/system/role/index.vue
修改 代理配置信息。 相关文件为:vue.config.js
devServer: {
proxy: {
}
},
修改完成后,重启项目生效
后续补充…
目前已开启 eslint
代码规范
在提示报错后请及时修改
格式化命令
单个文件格式化,可使用 webstorm 中 右键中 Fix ESlint Problems
进行格式化
在报错后,工具修改不了的不规范代码请自行修改
debugger
console.log
中调用函数 (项目打包会统一删除console.log)目前在打包时,已经配置gzip压缩,需后台修改 nginx相关配置
其中:
支持 iconfont
支持 svg
使用方式:
<template>
<div>
{{ status | filterStatus }}
</div>
</template>
export default {
name: 'Role',
filters: {
filterStatus (status) {
return status === 1 ? '启用' : ' 禁用'
}
}
}
定义在src/components/global 文件中
可建立文件并在文件目录下, 建立 index.js 并将其导出,则会注册为全局组件
可参考 src/components/global 文件写法
同时可以利用 npm run com
生成模板文件在进行修改