一、简单使用:
1、直接拷贝better-mock.js文件到工程:
2、然后就OK了,能在uni-app Vue页面中直接调用。
二、工程化:
import mockA from './mock-abc/mock-a.js' import mockB from './mock-abc/mock-b.js' function execMock(){ mockA.mockA(); mockB.mockB(); } module.exports={execMock}
// 界面A的Mock Data import Mock from '@/libs/mock/better-mock.mp.js' function mockA(){ Mock.mock('https://sontech-cloud-texpro-ews001.hz.wise-paas.com.cn/mocka',{ // 属性 list 的值是一个数组,其中含有3个元素 'list|3': [{ 'name|3': '钱学森', 'age|1-100': 1, 'isGay|4-6': true, 'people|+1': ['黄种人', '黑种人', '白种人'], 'sayHi': /[a-z][A-Z][0-9]/ }] }); // 输出结果 // console.log(JSON.stringify(res, null, 4));//使用四个空格缩进 } module.exports={mockA}
B模块与A模块基本一致。
三、全局注入:
四、Vue页面调用,然后Mock.js会自动拦截ajax请求:
<template> <view> <view v-for="(item,index) in list" :key="index"> <text style="color: white;">{{item.name}}</text> </view> </view> </template> <script> import ajax from "@/api/method.js"; var _self; export default { data() { return { list: [] } }, onLoad() {}, created() { _self=this; let url1 = '/mocka'; ajax.getMethod(url1, function (res) { console.log(JSON.stringify(res)); _self.list=res.data.list; }) let url2 = '/mockb'; ajax.getMethod(url2, function (res) { console.log(JSON.stringify(res)); }) } } </script> <style> </style>
方案选型:
1、采用大搜车的Easy Mock:https://www.easy-mock.com/
优点:网站功能丰富
缺点:网站有时候会卡死,可能访问人数多
2、本地部署Easy Mock:https://github.com/easy-mock/easy-mock
优点:a.功能丰富;b.前后端分离,Swagger作为测试工具
缺点:方案还是太重了,由于团队小,我只是想用最简单的方式,集成到微信小程序中;
2、采用Mock.js:https://github.com/nuysoft/Mock
优点:采用人数较多;
缺点:未能直接支持微信小程序;
3、采用Fork自Mock.js,并对微信做了适配的库:https://github.com/lavyun/better-mock
优点:能直接支持微信小程序;
缺点:Star数少,但考虑到并未改变Mock.js的用法,因此最终选定了该方案。
4、微信开发者工具提供的方案:https://developers.weixin.qq.com/miniprogram/dev/devtools/api-mock.html
还没认真考究,不过好像不利于工程化。