前后端分重构完成,再书写交互时遇到后台接口尚未完成,无法得到接口返回的测试数据,但是我们又需要一些数据来测试我们的前端功能的时候,往往会在这种情况下卡壳;最常见的办法就是:等~~~,等后台哥们完成接口再继续开发,似乎有了一个正当划水的理由。但是这样一点也不符合咱们早完事早收工的工作理念,所以呢,今天学习的关于前端模拟AJAX的三种办法,用于应对以上情况,加快开发效率;
1、mockjax.js和mockJSON.js
2、mock.js
3、gulp-mock-server
mockjax.js和mockJSON.js都是基于jquery开发的Javascript Library;
mockjax主要是可以针对指定的网址进行mock, 当Ajax呼叫网址时拦截并回传假的数据,
mockJSON则是根据我们指定的格式随机数生成回传的Json资料.
var isAjaxMocked = true;
if (isAjaxMocked) {
var one = $.mockjax({
url: 'api/index/siteInfo', url可以通过正则进行匹配
data: { data用于请求同一接口时,传递的参数不同而返回不同的数据,注:需写多个mockjax
type: 'cook'
},
status: 200, 请求状态
responseTime: 750, 请求时间
responseText: { "user": [{ "id": "1", "name": "david", "birthday": "2001/01/26" }] } 返回数据,此处就可以使用mockJSON来快速创建批量的数据
使用mockJSON创建批量数据的书写方式:
responseText: $.mockJSON.generateFromTemplate({
"user|3-6": [{ 随机3-6个
"id|+1": 1, +1递增
"name": "@MALE_FIRST_NAME", 随机姓名
"birthday": "@DATE_YYYY/@DATE_MM/@DATE_DD" 随机日期
}]
})
});
}
$.mockjax.clear(one); clear方法用于关闭某个mockjax实现
$.get('/Api/index/siteInfo', {type: 'cook'}, function(callback) {
$('.wrap').html(JSON.stringify(callback));
console.log(callback)
})
mockJSON的生成模板规则见 https://github.com/mennovanslooten/mockJSON 这个需要clone下来,看他的index.html,github上没介绍;
var gulp = require('gulp'),
mockserver = require('gulp-mock-server');
gulp.task('mock', function() {
gulp.src('.')
.pipe(mockserver({
host: 'localhost',
path: '/',
open: 'http://localhost:8090/index.html',
port: 8090, 端口号
allowCrossOrigin : true 跨域
}));
})
更多参数请查看 https://github.com/sanyueyu/gulp-mock-server
文件结构:
$.get('/index/siteInfo', function(callback) { url对应了data文件下的目录;
$('.wrap').html(JSON.stringify(callback));
console.log(callback)
})
$.get('/test', function(callback) {
$('.wrap').html(JSON.stringify(callback));
console.log(callback)
})
优缺点:
1、优点:项目中只要启动服务,不需要在代码中引入相关的js文件,接口数据按文件结构分类,方便管理;
2、缺点:①json文件整理,归类繁杂,mockdata生成不方便; ②更新json文件后,需要重启服务才能得到更新;
来源:https://www.cnblogs.com/milo-wjh/p/6424246.html
何为mock,我认为mock主要就是通过正常请求在后端接口进度落后的情况下,还能获取到和后端约定数据结构一样的模拟数据的一门技术,以避免后端接口进度滞后影响我们正常的开发。mock可能会涉及到4门技术,分别是服务端技术、随机生成特定格式数据的技术、请求转发、请求拦截。
网上找了很多mockjs(是mockjs不是其他的mock插件)环境的配置, 基本全是错的.生产环境不需要mock, 开发环境有时需要mock有时不需要mock.可能这个功能点太小了, 导致大家都不在乎.
本文阅读需要一定Nodejs的相关知识,因为会扩展webpack的相关功能,并且实现需要遵守一定约定和Ajax封装。沉淀的脚手架也放到Github上供给同学参考React-Starter, 使用手册还没写完善, 整体思路和React还是Vue无关
在前后端分离的项目中常常会遇到当前端页面开发完成,但是后端接口还没好,暂不支持联调的情况下,一般我们会用到mock数据。这边简单说一下最常见且经常会遇到的curd接口模拟
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!