程序员的知识教程库

网站首页 > 教程分享 正文

Mock.js原理 mock.js作用

henian88 2024-12-25 11:59:58 教程分享 7 ℃ 0 评论

官方资料

官网:http://mockjs.com/

代码:https://github.com/nuysoft/Mock/tree/refactoring

文档:https://github.com/nuysoft/Mock/wiki

为什么使用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('http://www.aaa.com', 'get', () => {
    return arr
})

导入接口

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

使用定义好的接口

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


参考链接:

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

https://blog.csdn.net/qq_40409143/article/details/115289315

https://blog.csdn.net/weixin_44427998/article/details/115541145

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表