龙空技术网

Mock.js原理

stepfeng 972

前言:

此刻你们对“mock拦截请求原理”大概比较珍视,兄弟们都想要学习一些“mock拦截请求原理”的相关内容。那么小编也在网摘上收集了一些对于“mock拦截请求原理””的相关知识,希望朋友们能喜欢,各位老铁们一起来学习一下吧!

官方资料

官网:

代码:

文档:

为什么使用Mock.js

Mock.js 是用于生成随机数据的,拦截 Ajax 请求。通过拦截 Ajax 请求,根据数据模板生成并返回模拟数据,让前端工程师独立于后端进行开发。

Mock.js 原理

重写了XMLHttpRequest,属于前端JS拦截,浏览器并没有发出请求Mock.js实现拦截,是模拟了XMLHttpRequest对象。重写open、send等方法,方法调用时,只是普通函数的调用,不会发送真正的请求。ajax请求发生时,请求根本没有发出,只是调用了几个自己写的普通函数,得到了返回数据而已。

不存在跨域问题,因为运行在浏览器上,浏览器并没有发出请求,不会违背浏览器的跨域策略,跨域指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

正式版本请删除Mock.js。

Mock.js使用

首先安装

npm install mockjs --save / yarn add mockjs --save

使用mockjs模拟数据并开发接口

//新建一个mockApi.js模块 来保存我们模拟的接口var Mock = require('mockjs') // 导入mockjs// 模拟一个列表数据var arr = Mock.mock({	"list|4-10": [  // 生成一个 length是 4~10之间的数组		{			"name": "@first", // @first用来生成名字			"age|12-50": 12, // 生成一个 12-50之间的整数			"id|+1": 1 // 生成的id每次递增1		}	]})// 获取列表数据的接口 第一个参数表示自定义的接口地址 第二个参数表示自定义的请求方法 // 第三个参数是回调函数,定义返回的数据Mock.mock(';, 'get', () => {    return arr})

导入接口

 //在main.js中导入定义好的mockApi模块 require('mockApi文件的地址')

使用定义好的接口

//在任意vue文件中 当然axios如果自己已经定义 请使用自己的 这里只做演示用import axios from 'axios'export default {	created() {		axios.get(';).then(res => {			// 这里的res就是mock模拟的接口返回的数据		})	}}

参考链接:

标签: #mock拦截请求原理