Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
0、Node环境下安装和使用Mock
#安装 npminstallmockjs
//使用Mock
varMock=require('mockjs')
vardata=Mock.mock({
//属性list的值是一个数组,其中含有1到10个元素
'list|1-10':[{
//属性id是一个自增数,起始值为1,每次增1
'id|+1':1
}]
})
//输出结果
console.log(JSON.stringify(data,null,4))
1、拦截ajax请求调用
方法如下
Mock.mock(rurl?,rtype?,template|function(options))
方法说明:
(1)rurl:可选参数。
表示需要拦截的URL,可以是URL字符串或URL正则。例如/\/domain\/list\.json/、'/domian/list.json'。
(2)rtype:可选参数。
表示需要拦截的Ajax请求类型。例如GET、POST、PUT、DELETE等。
(3)template|function:必选参数,只取其中一项。
(4)template表示数据模板,可以是对象或字符串。例如{'data|1-10':[{}]}、'@EMAIL'。
(5)function指向本次请求的Ajax选项集,含有url、type和body三个属性,参见XMLHttpRequest规范。
提示
从1.0开始,Mock.js通过覆盖和模拟原生XMLHttpRequest的行为来拦截Ajax请求,不再依赖于第三方Ajax工具库(例如jQuery、Zepto等)。
2.拦截Ajax请求超时
配置拦截Ajax请求时的行为。支持的配置项有:timeout。
(1)Mock.setup(settings)
(2)settings
必选。
配置项集合。
(3)timeout
可选。
指定被拦截的Ajax请求的响应时间,单位是毫秒。值可以是正整数,例如400,表示400毫秒后才会返回响应内容;也可以是横杠'-'风格的字符串,例如'200-600',表示响应时间介于200和600毫秒之间。默认值是'10-100'。
3.本人理解的拦截
使用同一个方法名,去栏截指定方法。通过call修改this指向,到达拦截。
//实现原理
//定义父类
varmock_ajax=function(str){
this.showName=function(){
console.log(str);
}
returnthis;
};
//定义子类
varjquery_ajax=function(str){
this.showName=function(){
console.log('ajax');
}
returnthis;
};
jquery_ajax('').showName();//->ajax
//改变this指向
mock_ajax.call(jquery_ajax,'111');
//调用
jquery_ajax.showName();