一、mock.js模拟响应ajax请求
1、安装mockjs依赖
npm install mockjs -D
2、配置开发环境及生产环境
为了只在开发环境使用mock,而打包到生产环境时自动不使用mock,我们可以在env中做一个配置
(1)dev.env
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
MOCK: 'true'
})
(2)prod.env
module.exports = {
NODE_ENV: '"production"',
MOCK: 'false'
}
(3)main.js
//开发环境下才会引入mockjs
process.env.MOCK && require('@/mock')
注1:import是ES6标准中的模块化解决方案,require是node中遵循CommonJS规范的模块化解决方案
后者支持动态引入,也就是require(${path}/xx.js)
3、mock的使用
在src目录下创建mock目录,定义mock主文件index.js,并在该文件中定义拦截路由配置,
导入公共模块及mockjs全局设置
import Mock from 'mockjs' //引入mockjs,npm已安装
import action from '@/api/action' //引入封装的请求地址
//全局设置:设置所有ajax请求的超时时间,模拟网络传输耗时
Mock.setup({
// timeout: 400 //延时400s请求到数据
timeout: 200 - 400 //延时200-400s请求到数据
})
注1:index.js文件的作用很显然,就是将分散的xxx-mock文件集合起来.后面再添加新的mock文件,都需要在这里引入
二、前台主界面的搭建
1、 Container布局容器
2、 TopNav
注1:使用数据总线,在非父子的组件之间通信,完成左侧菜单折叠
3、 LeftNav
三、退出功能
exit(){
this.$router.push({
path:'/Login'
})
}
四、左侧树收缩功能(vue总线的概念)
定义总线
new Vue({
el: '#app',
data(){
return {
Bus:new Vue({
})
}
},
router,
components: { App },
template: '<App/>'
})
在A组件触发事件
this.
r
o
o
t
.
B
u
s
.
root.Bus.
root.Bus.emit(“事件名”, 参数1, 参数2, …);
doToggle(){
this.collapsed = !this.collapsed;
this.$root.Bus.$emit("collapsed-side", this.collapsed);
}
在B组件监听事件
this.
r
o
o
t
.
B
u
s
.
root.Bus.
root.Bus.on(“事件名”, 回调函数);
this.$root.Bus.$on("collapsed-side", (v)=>{
this.asideClass = v ? 'main-aside-collapsed':'main-aside';
});