• 玩转【Mock.js】,前端也能跑的很溜


    现在开发已经是前后端分离了,前端和后端可以同时进行开发,互不影响,但是有些时候后端开发的接口慢于前端,导致前端需要等待后端的接口完成才能完成前后端对接,为了解决这个痛点,出现了模拟接口数据的方案,目前行业中主要有四种方案来模拟后端放回的数据:

    • 暴力式,直接在前端代码中写入模拟数据,但是这种缺点很明显,改变了代码的原有逻辑,嵌入式太深,耦合性搞
    • 拦截式,这就是本文主要推荐的方式,通过拦截ajax请求,然后重定向到项目中的某个js文件,从js文件中获取各种伪造的数据
    • Mock Server,就是搭建一个Mock服务器来模拟数据,根据这个服务器来生产需要的接口数据,很显然这种成本有点高,不适合任何人,特别是大型的团队,文档的编写,接口的变更,通知到每一个人,代价就比较大了
    • Mock 平台,比如市面上RAP,但是需要后端使用他,未必所有的后端都愿意使用他

    Mock.js:生成随机数据,拦截 Ajax 请求,Mock.js 通过覆盖和模拟原生 XMLHttpRequest 的行为来拦截 Ajax 请求,“转发”到本地文件,所谓转发,其实就是读取本地 mock文件,并以json或者script等格式返回给浏览器。
    file
    Mock.js具有以下几个特点:

    • 让前端攻城师独立于后端进行开发,前后端可以同时进行。
    • 不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。
    • 支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。
    • 通过随机数据,模拟各种场景。

    安装

    # 推荐通过npm安装
    npm install mockjs
    

    使用示例

    // 首先在js文件中引进
    var Mock = require('mockjs')
    var data = Mock.mock({
        // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
        'list|1-10': [{
            // 属性 id 是一个自增数,起始值为 1,每次增 1
            'id|+1': 1
        }]
    })
    

    语法

    主要可以分成以下两个方面:

    • 数据模板定义规范
    • 据占位符定义规范

    数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:'name|rule': value

    • 'name|min-max': string=>通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max)
    • 'name|count': string=>通过重复 string 生成一个字符串,重复次数等于 count
    • 'name|+1': number=>属性值自动加 1,初始值为 number
    • 'name|min-max': number=>生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型
    • 'name|count': object=>定对象中随机选择两条数据,
    Mock.mock({
      "object|2": {
        "310000": "上海市",
        "320000": "江苏省",
        "330000": "浙江省",
        "340000": "安徽省"
      }
    })
    

    输出为:

    {
      "object": {
        "320000": "江苏省",
        "330000": "浙江省"
      }
    }
    

    file
    数据占位符定义规范 DPD
    占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。

    • 来标识其后的字符串是 占位符。
    • 符 引用的是 Mock.Random 中的方法。
    • Mock.Random.extend() 来扩展自定义占位符。
    • 符 也可以引用 数据模板 中的属性。
    • 符 会优先引用 数据模板 中的属性。
    • 符 支持 相对路径 和 绝对路径。

    可以通过Mock.setup( settings ),配置拦截 Ajax 请求时的行为。支持的配置项有:timeout
    指定被拦截的 Ajax 请求的响应时间,单位是毫秒。值可以是正整数,例如 400,表示 400 毫秒 后才会返回响应内容;也可以是横杠 '-' 风格的字符串,例如 '200-600',表示响应时间介于 200 和 600 毫秒之间。默认值是'10-100'。

    Mock.setup({
        timeout: 400
    })
    Mock.setup({
        timeout: '200-600'
    })
    

    扫码关注公众号,有更多精彩文章等你哦

    file

  • 相关阅读:
    R语言:用简单的文本处理方法优化我们的读书体验
    R语言-用R眼看琅琊榜小说的正确姿势
    R语言-Kindle特价书爬榜示例 & 输出HTML小技巧
    Hadoop里的数据挖掘应用-Mahout——学习笔记<三>
    Hadoop-HBASE案例分析-Hadoop学习笔记<二>
    Hadoop概括——学习笔记<一>
    R语言——七月
    R语言:ggplot2精细化绘图——以实用商业化图表绘图为例
    R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
    R语言学习笔记-机器学习1-3章
  • 原文地址:https://www.cnblogs.com/tangkaizhen/p/11811020.html
Copyright © 2020-2023  润新知