0. Install and use Mock in Node environment
# 安装 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. Intercept ajax request call
The method is as follows
Mock.mock( rurl?, rtype?, template|function( options ) )
Method description:
(1) rurl: Optional parameter.
represents the URL that needs to be intercepted, which can be a URL string or URL regular. For example /\/domain\/list\.json/, '/domian/list.json'.
(2)rtype: optional parameter.
indicates the type of Ajax request that needs to be intercepted. For example GET, POST, PUT, DELETE, etc.
(3) template|function: required parameters, only take one of them.
(4)template represents the data template, which can be an object or a string. For example { 'data|1-10':[{}] }, '@EMAIL'.
(5) function points to the Ajax option set of this request, containing three attributes: url, type and body. See the XMLHttpRequest specification.
Tips
Starting from 1.0, Mock.js intercepts Ajax requests by overriding and simulating the behavior of native XMLHttpRequest, and no longer relies on third-party Ajax tool libraries (such as jQuery, Zepto, etc.).
2. Interception of Ajax request timeout
Configure the behavior when intercepting Ajax requests. Supported configuration items include: timeout.
(1)Mock.setup( settings )
(2)settings
Required.
Configuration item collection.
(3) timeout
Optional.
Specify the response time of the intercepted Ajax request, in milliseconds. The value can be a positive integer, such as 400, which means that the response content will be returned after 400 milliseconds; or it can be a hyphen '-' style string, such as '200-600', which means that the response time is between 200 and 600 milliseconds. The default value is '10-100'.
3. The interception I understand
Use the same method name and go to the column to intercept the specified method. Modify this pointer through call and reach interception.
// 实现原理 // 定义父类 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();
For more tutorials on using Mock.js to intercept AJAX requests in a Node.js server environment, please pay attention to the PHP Chinese website!
Related articles:
Detailed explanation of interception instances of ajax requests by interceptors