npm install mockjs -D #只在开发环境使用

为了只在开发环境使用mock,而打包到生产环境时自动不使用mock,我们可以在env中做一个配置
'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
MOCK: 'true'
})
'use strict'
module.exports = {
NODE_ENV: '"production"',
MOCK: 'false'
}
//开发环境下才会引入mockjs

代码
// import是ES6标准中的模块化解决方案,require是node中遵循CommonJS规范的模块化解决方案
// 后者支持动态引入,也就是require(${path}/xx.js)
process.env.MOCK && require('@/mock')
import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import App from './App'
import router from './router'
import axios from '@/api/http' /* vue项目对axios的全局配置 */
import VueAxios from 'vue-axios'
使用
在src目录下创建mock目录,定义mock主文件index.js,并在该文件中定义拦截路由配置,
/src/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文件,都需要在这里引入

index.js
import Mock from 'mockjs' //引入mockjs,npm已安装
import action from '@/api/action' //引入请求地址
//全局设置:设置所有ajax请求的超时时间,模拟网络传输耗时
Mock.setup({
// timeout: 400 //延时400s请求到数据
timeout: 200 - 400 //延时200-400s请求到数据
})
//引登陆的测试数据,并添加至mockjs
import loginInfo from '@/mock/json/login-mock.js'
let s1 = action.getFullPath('SYSTEM_USER_DOLOGIN')
Mock.mock(s1, "post", loginInfo)
// Mock.mock(s1, /post|get/i, loginInfo)
login-mock.js
// const loginInfo = {
// code: -1,
// message: '密码错误'
// }
//使用mockjs的模板生成随机数据
const loginInfo = {
'code|0-1': 0,
'msg|3-10': 'msg'
}
export default loginInfo;
然后关闭eclipse,重新运行项目,
执行结果:

AppMain.vue
Main
LeftNav.vue
导航一
分组一
选项1
选项2
选项3
选项4
选项1
导航二
导航三
导航四
TopNav.vue
超级管理员
设置
个人中心
退出

用户登录
提交
用户注册
忘记密码
login.vue
然后index.js配置路由
import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/views/Login'
import Reg from '@/views/Reg'
import AppMain from '@/components/AppMain'
import LeftNav from '@/components/LeftNav'
import TopNav from '@/components/TopNav'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'Login',
component: Login
}, {
path: '/Login',
name: 'Login',
component: Login
},{
path: '/Reg',
name: 'Reg',
component: Reg
},
{
path: '/AppMain',
name: 'AppMain',
component: AppMain,
children:[
{
path: '/LeftNav',
name: 'LeftNav',
component: LeftNav
},{
path: '/TopNav',
name: 'TopNav',
component: TopNav
}
]
}
]
})
运行结果:

添加事件即可

exit(){
this.$router.push({path:'Login'})
}
点击退出就会推到主界面
LeftNav.vue
超级管理员
设置
个人中心
退出
TopNav.vue
导航一
分组一
选项1
选项2
选项3
选项4
选项1
导航二
导航三
导航四
AppMain.vue
Main
折叠:

展开:
