今天给大家带来通过mock为每个组件准备模拟数据,生成随机响应数据,如果哪里不对,请多多指教。
Mock.js是一个模拟数据的生成器,用来帮助前端调试开发、进行前后端的原型分离以及用来提高自动化测试效率。众所周知Mock.js因为两个重要的特性风靡前端,由于前后端是分离的,所以为了前端编写时候方便测试,我们就可以编写一个mock来测试ajax提交数据是否成功
登陆成功后
实现mockjs发送数据效果展示
以下这些前提是必须要确定nodejs环境已经安装好的
- # -D表示只在开发环境中使用
- npm install mockjs -D
开发环境配置如下:
- module.exports = merge(prodEnv, {
- NODE_ENV: '"development"',
- //增加配置
- MOCK:'true'
- })
生产环境配置如下:
- module.exports = {
- NODE_ENV: '"production"',
- //新增mockjs配置
- MOCK:'false'
- }
修改main.js
process.env.MOCK && require('@/mock')
注:
- process对象是Node的一个全局对象,提供当前Node进程的信息
- process.env返回环境变量
- import是ES6标准中的模块化解决方案,require是node中遵循CommonJS规范的模块化解决方案,后者支持动态引入,也就是require(${path}/xx.js)
在src目录下创建mock目录,定义mock主文件index.js,并在该文件中定义拦截路由配置,/src/mock/index.js
- //引入mockjs,npm已安装
- import Mock from 'mockjs'
-
- //引入封装的请求地址
- import action from '@/api/action'
-
- //全局设置:设置所有ajax请求的超时时间,模拟网络传输耗时
- Mock.setup({
- //延时400s请求到数据
- // timeout: 400
- //延时200-400s请求到数据
- timeout: 200 - 400
- })
每个组件准备模拟数据,为每个组件(*.vue)准备模拟数据。然后导入到mock/index.js中
这里我们引入编辑好模拟数据login-mock.js
- //引入mockjs,npm已安装
- import Mock from 'mockjs'
-
- //引入封装的请求地址
- import action from '@/api/action'
-
- //将模拟数据导入到这里。
- import loginData from '@/mock/json/login-mock.js'
-
- //获取请求的url
- let url = action.getFullPath("SYSTEM_USER_DOLOGIN");
-
-
- //Mock.mock(url, "post", loginData);
-
- //执行发送模拟请求
- Mock.mock(url, /post|get/i, loginData);
-
-
- //全局设置:设置所有ajax请求的超时时间,模拟网络传输耗时
- Mock.setup({
- //延时400s请求到数据
- // timeout: 400
- //延时200-400s请求到数据
- timeout: 200 - 400
- })
- //为增加可读性loginData与mack/index.js中导入的名称对应
- const loginData = {
- "success": true,
- "msg": "密码正确"
- }
-
- //将当前模块导出,导出后index.js才可以导入
- export default loginData
注:
- url 请求url
- post 请求方式
- loginData 模拟数据
- mockjs 会拦截发送的请求,并使用模拟数据充当真实返回的响应数据
- Mock.mock(url, /post|get/i, loginData); 执行模拟发送请求
- export default loginData 将当前模块导出,导出后index.js才可以导入
通过路由跳转 常用方式:
- 字符串: this.$router.push('/home/first')
- 对象: this.$router.push({ path: '/home/first' })
- 命名的路由:
this.$router.push({ name: 'home', params: { userId: wise }})
params为传递的参数this.$router.push、replace、go的区别:
this.router.push(): 跳转到不同的url,这个方法会向history栈添加一个记录,点击后退会返回到上一个页面 this.router.replace() : 同样是跳转到指定的url,但是这个方法不会向history里面添加新的记录,点击返回,会跳转到上上一个页面。上一个记录是不存在的。
this.$router.go(n):相对于当前页面向前或向后跳转多少个页面,类似 window.history.go(n)。n可为正数可为负数。负数返回上一个页面