简介
Mock.js 是一个用于生成随机数据的模拟数据生成器,可用于前后端分离开发中测试接口、模拟数据等。它是一个npm包,可以通过npm安装,目前已经在Github上有超过1万个stars。
安装
在命令行中输入以下命令进行安装:
npm install mockjs --save-dev
使用方法
常规语法
Mock.js提供了丰富的API来生成各种类型的数据:
Mock.mock()
:根据数据模板生成模拟数据。Mock.Random
:各种数据类型的生成函数。Mock.setup()
:配置拦截 Ajax 请求时的行为。Mock.toJSONSchema()
:把 Mock.js 风格的数据模板转换成 JSON Schema。Mock.valid()
:校验真实数据是否与数据模板匹配。
下面是一个常规的示例:
-- -------------------- ---- ------- ----- ---- - ------------------ ----- ---- - ----------- ------------ -- -------- -- ------- --------- ------------ --- -------- ----- ----- ----------- ---------------------- -------- --------- -------- -------------------- ---------- -------------- --------------- -------------- -- --- -------------------------------- ----- ----
输出结果如下:
-- -------------------- ---- ------- - ------- - - ----- -- ------- ------ ------ --- ------ ---- ----------- ------------- -------- ----------------------- -------- -------------- ---------- ---- --- ----- --------------- ----------------------------------------- -- -- --- - -
以上示例中,数据模板定义了一个list数组,其中的每一项都包含了id、name、age、sex、birthday、email、phone、address和introduction属性。Mock.js 提供的API生成了符合这个模板的随机数据。
拦截Ajax请求
Mock.js 可以拦截AJAX请求并返回模拟数据。示例如下:
-- -------------------- ---- ------- ----- ---- - ------------------ ----------------------- ------ - ---------- -- -------- -- ------- --------- ------------ --- -------- ----- ----- ----------- ---------------------- -------- --------- -------- -------------------- ---------- -------------- --------------- -------------- -- ---
以上示例定义了一个get请求,并返回一个包含10个用户信息的数组。当我们在前端发起一个GET请求时,Mock.js会拦截这个请求并返回这个模拟数据。
自定义扩展
Mock.js提供了自定义扩展的方法,可以方便地扩展新的数据类型或者生成规则。下面是一个自定义扩展示例:
-- -------------------- ---- ------- ----- ---- - ------------------ -------------------- ------ ---------- - ----- ------ - --------- --------- ---------- ------ ------------------ - --- ----- ---- - ----------- ---------- ---------- --- ------------------------ -- -------- -- ------- -- --------
以上示例中,我们扩展了一个fruit数据类型,并定义了它的生成规则:从一个包含三种水果
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/32704