网上搜了一下也没有比较全的代码,下面总结后介绍一下
mockjs作用:在后端接口未开发完成情况下,前端自己模拟接口返回的数据
步骤:
1.下载mockjs与axios
npm i mockjs
npm i axios
2.在vue文件src下新建mock文件夹与内部mock.js 文件
mock.js 文件内部:
- // 引入mockjs
- import Mock from "mockjs";
-
- //延时200-600毫秒请求到数据
- Mock.setup({
- timeout: "200-600",
- });
-
- // 配置请求拦截
- Mock.mock('/mock/tableDataOne', {
- data: {
- mtime: "@datetime", // 随机生成日期时间
- "score|1-800": 800, // 随机生成1-800的数字
- "rank|1-100": 100, // 随机生成1-100的数字
- "stars|1-5": 5, // 随机生成1-5的数字
- nickname: "@cname", // 随机生成中文名字
- },
- });
3.main.js文件中引入mock.js文件
import './mock/mock.js'
4.src下新建api文件夹与reques.js封装axios请求
- //这里建议给axios统一设置了基地址,大家根据需求配置请求响应拦截即可
- import axios from 'axios'
- const require = axios.create({
- baseURL:'/mock'
- })
- export default require
5.在.vue文案中引入request并发送请求(这里在mouted中做了简单的测试使用)
第2步我们在mock.js文件中mock了一个路径,采用的是:
Mock.mock( rurl, template )
记录数据模板。当拦截到匹配
rurl
的 Ajax 请求时,将根据数据模板template
生成模拟数据,并作为响应数据返回。
这意味着当mockjs匹配到‘/mock/tableDataOne’这个路径时,就会返回对象中的数据
- async mounted() {
- // 发请求获取mock数据
- const tableDataOne = await request({
- url: "/tableDataOne",
- method: "get",
- });
- console.log(tableDataOne, "tableDataOne");
- },
控制台打印结果:
总结:mockjs可以拦截到匹配
rurl路径
的 Ajax 请求,这里的url可以是固定的路径地址,也可以使用正则表达式进行匹配,同时Mock.mock方法有不同的参数,上面只列举了一种参数,具体大家可以参考mockjs官网:Mock.mock() · nuysoft/Mock Wiki · GitHub
扩展:
第2步mock.js文件中添加mock模拟代码
- Mock.mock(/\/mock\/mode1/, (option) => {
- console.log(option, "option"); // { "url": "/mock/mode1/get?name=123", "type": "GET", "body": null }
- return Mock.mock({
- msg: "successful",
- outData: {
- name: "@cname", // 随机生成中文名字
- },
- });
- });
第5步在.vue文件的mounted中使用封装的request发送一个新的请求
- const mode1 = await request({
- url: "/mode1",
- method: "get",
- params: {
- name: 123,
- },
- });
- console.log(mode1, "mode1");
控制台打印结果: