Node.js服务器环境下使用Mock.js拦截AJAX请求的教程


Posted in Javascript onMay 23, 2016

0、Node环境下安装和使用Mock

# 安装
npm install mockjs
// 使用 Mock
var Mock = require('mockjs')
var data = 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 指向,到达 拦截。

// 实现原理
// 定义父类
var mock_ajax = function(str){
 this.showName=function(){
 console.log(str);
 }
 return this;
};
// 定义子类
var jquery_ajax = function(str){
 this.showName = function(){
 console.log('ajax');
 }
 return this;
};

jquery_ajax('').showName();// -> ajax

// 改变 this 指向
mock_ajax.call(jquery_ajax,'111');
// 调用
jquery_ajax.showName();
Javascript 相关文章推荐
Windows Live的@live.com域名注册漏洞 利用代码
Dec 27 Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
Javascript继承机制的设计思想分享
Aug 28 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
Apr 28 Javascript
jQuery实现的网格线绘制方法
Jun 20 Javascript
jQuery读取XML文件的方法示例
Feb 03 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
underscore之Collections_动力节点Java学院整理
Jul 10 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
Vue 实现手动刷新组件的方法
Feb 19 Javascript
详解vuex的简单todolist例子
Jul 14 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
谈一谈bootstrap响应式布局
May 23 #Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
May 23 #Javascript
JavaScript的Vue.js库入门学习教程
May 23 #Javascript
详解JavaScript中|单竖杠运算符的使用方法
May 23 #Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 #Javascript
jQuery Mobile中的button按钮组件基础使用教程
May 23 #Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 #Javascript
You might like
php中的一些数组排序方法分享
2012/07/20 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
smarty简单应用实例
2015/11/03 PHP
PHP图片加水印实现方法
2016/05/06 PHP
php实现文章置顶功能的方法
2016/10/20 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
jquer之ajaxQueue简单实现代码
2011/09/15 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python操作CouchDB数据库简单示例
2015/03/10 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
物流管理专业应届生求职信
2013/11/21 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
房产证明范本
2015/06/19 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
2016公司中秋节寄语
2015/12/07 职场文书