使用Mockjs模拟接口实现增删改查、分页及多条件查询

目录
  • 一、什么是Mock?
  • 二、使用Mock有什么好处
  • 三、安装Mock
  • 四、效果图
  • 五、使用Mock模拟接口实现增删改查、分页、多条件查询
  • 总结

一、什么是Mock?

mock官网

mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。

二、使用Mock有什么好处

生成随机数据,拦截 Ajax 请求

1️⃣前后端分离

让前端攻城师独立于后端进行开发。

2️⃣增加单元测试的真实性

通过随机数据,模拟各种场景。

3️⃣开发无侵入

不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。

4️⃣用法简单

符合直觉的接口。

5️⃣数据类型丰富

支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。

6️⃣方便扩展

支持支持扩展更多数据类型,支持自定义函数和正则。

三、安装Mock

//安装最新版本mockjs
npm install mockjs

四、效果图

五、使用Mock模拟接口实现增删改查、分页、多条件查询

使用mock实现英文单词的增删改查、分页、多条件查询

话不多说,上代码

Mock下 index.js

var englishArr = [];
//保存英文单词
Mock.mock('/addEnglish', /post/i,(options) => {
    let english = JSON.parse(options.body).params.english;
    if (english.noid == null) {
        english.noid = Mock.Random.increment();
        englishArr.push(english);
    } else {
        for (let i = 0; i < englishArr.length; i++) {
            if (englishArr[i].noid == english.noid) {
                englishArr.splice(i, 1);
                englishArr.push(english);
            }
        }
    }
    return 0;
});

//获取所有英文单词
Mock.mock("/getEnglishList", /post/i, (options)=> {
    let info = JSON.parse(options.body).params.info;
    if (!info.pageNum) {
        info.pageNum = 1;
    }
    let newArr = [];
    // pageNum, pageSize, searchKey
    // console.log("截取指定元素:"+newArr.length)
    //englishArr.splice((info.pageNum -1) * info.pageSize, info.pageSize)
    if (englishArr.length > 0) {
        let pageNum = (info.pageNum -1) * info.pageSize;
        console.log(pageNum+"--"+info.pageSize)
        //计算截取的数组长度,如果用splice会导致原数组数据丢失
        let num = info.pageNum * info.pageSize;
        for (let i = pageNum; i < num; i++) {
            //全部数据的数组长度不能为空
            if (englishArr[i] != undefined) {
                //查询条件为单词时直接将符合的数据添加到新数组内
                if (info.searchKey && !englishArr[i].world.indexOf(info.searchKey)) {
                    console.log("查询条件:"+info.searchKey)
                    newArr.push(englishArr[i]);
                }

                //查询条件为中文时将符合的数据添加到新数组内
                if (info.searchKey && !englishArr[i].chinese.indexOf(info.searchKey)) {
                    console.log("查询条件:"+info.searchKey)
                    newArr.push(englishArr[i]);
                }

                //查询条件为空时添加所有数据到新数组
                if (!info.searchKey) {
                    newArr.push(englishArr[i]);
                }
            }
        }
        console.log(newArr)
        let page={ list: newArr, pageSize: 2, total: englishArr.length };
        return page;
    }
    let page={ list: englishArr, pageSize: 2, total: englishArr.length };
    return page;
});

//删除英文单词
Mock.mock("/deleteEnglish", /post/i, (options)=> {
    let english = JSON.parse(options.body).params.english;
    for (let i = 0; i < englishArr.length; i++) {
        if (englishArr[i].noid == english.noid) {
            englishArr.splice(i, 1);
        }
    }
    return 0;
})

EnglishList.vue

<template>
  <div class="english">
    <div class="container1">
      <div class="left2">
        <left/>
      </div>
      <div class="right2">
        <div class="top3">
          <top3/>
        </div>
        <div class="main3">

          <!--  主体部分开始 -->

          <div class="bread4">
            <el-breadcrumb separator="&gt;">
              <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
              <el-breadcrumb-item><a href="/" rel="external nofollow" >英文单词管理</a></el-breadcrumb-item>
            </el-breadcrumb>
          </div>
          <div class="main4">

            <div class="box-search">
              <div class="input5">
                <el-input type="text" size="mini" v-model="searchInfo.searchKey" @keydown.native.enter="getEnglishList" @clear="getEnglishList" placeholder="英文/中文"></el-input>
              </div>
              <div class="button5">
                <el-button @click="getEnglishList()" size="mini" type="primary" icon="el-icon-search">搜索</el-button>
                <el-button @click="clkBtnAdd()" size="mini" type="warning" icon="el-icon-plus">新增</el-button>
              </div>
            </div>

            <div class="box-table5">
              <el-table :border="true" :data="englishPage.list" style="width: 100%"
              :header-cell-style="{'background-color':'#999','color':'#fff'}">
                <el-table-column  type="index" label="序号" width="80">
                </el-table-column>
                <el-table-column  prop="world" label="英文单词" width="180">
                </el-table-column>
                <el-table-column  prop="chinese" label="中文解释" width="180">
                </el-table-column>
                <el-table-column label="操作" width="180">
                    <template slot-scope="scope">
                      <el-button type="warning" size="mini" @click="editInfo(scope.row)">修改</el-button>
                      <el-button type="primary" size="mini" @click="clkBtnDelete(scope.row)">删除</el-button>
                    </template>
                </el-table-column>
              </el-table>
            </div>
            <div class="box-page5">
              <el-pagination
                      layout="prev, pager, next" @current-change = "chgPageNum"
                      :page-size="englishPage.pageSize" :total="englishPage.total">
              </el-pagination>
            </div>

            <el-dialog title="保存信息" :visible.sync="showAddEnglish">
              <el-form :model="english" label-width="120px">
                <el-form-item label="英文单词">
                  <el-input v-model="english.world" size="mini" placeholder="请输入英文单词"></el-input>
                </el-form-item>
                <el-form-item label="中文解释">
                  <el-input v-model="english.chinese" size="mini" placeholder="请输入中文解释"></el-input>
                </el-form-item>
              </el-form>
              <span slot="footer">
                <el-button type="primary" size="mini" @click="clkBtnSave">保存</el-button>
                <el-button type="warning" size="mini" @click="showAddEnglish = false">取消</el-button>
              </span>
            </el-dialog>

          </div>

          <!--  主体部分结束 -->

        </div>
      </div>

    </div>
  </div>
</template>

<script>
import Left from './include/Left.vue';
import Top3 from './include/Top3.vue';
import Axios from 'axios';

export default {
  components: { Left, Top3 },
  name: 'english',
  data(){
    return {
      page1: {pageSize: 5, total: 0, list: [] },
      showAddEnglish:false,
      english:{},
      englishPage:{pageNum:1, pageSize: 2, total: 0, list:[]},
      searchInfo:{searchKey:''}
    }
  },
  // vue 生命周期
  mounted(){
    this.initData();
  },
  methods:{
    initData(){
      this.getEnglishList();
    },
    clkBtnAdd() {
      this.english = {noid:null};
      this.showAddEnglish = true;
    },
    clk1(){
      // Axios.post('/test3').then( (d1r)=>{
      //   this.page1  =  d1r.data;
      // } )
    },
    chgPageNum(pageNum) {
      this.englishPage.pageNum = pageNum;
      this.getEnglishList();
    },
    editInfo(row){
      this.showAddEnglish = true;
      this.english = JSON.parse(JSON.stringify(row));
    },
    getEnglishList() {
      Axios.post("/getEnglishList", {
        params:{
          info:{pageNum: this.englishPage.pageNum, pageSize: this.englishPage.pageSize, searchKey: this.searchInfo.searchKey}
        }
      }).then((res) => {
        this.englishPage = res.data;
        console.log(res.data)
      })
    },
    clkBtnSave() {
      Axios.post("/addEnglish", {
        params:{
          english:this.english
        }
      }).then((res) => {
        if (res.data == 0) {
          this.getEnglishList();
          this.showAddEnglish = false;
        }
      })
    },
    clkBtnDelete(row) {
      this.$confirm("您确信要删除吗?", "提示").then(() => {
        Axios.post("/deleteEnglish", {
          params:{
            english:row
          }
        }).then((res) => {
          if (res.data == 0) {
            this.getEnglishList();
            this.$message("删除成功~")
          }
        })
      }).catch(() => {
        this.$message("取消删除")
      })

    }
  }

}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.english{
  height: 100%;
}
.container1{
  height: 100%;
  display: flex;
}

.container1 .left2{
  width: 210px;
  height: 100%;
  background-color: #304156;
}

.container1 .right2{
  flex: 1;
  display: flex;
  flex-flow: column;

}
.container1 .right2 .top3{
  height: 40px;
  background-color: #e3e3e3;
}
.container1 .right2 .main3{
  flex: 1;
}

.main4{
  padding-left:20px;
  padding-right:20px;

}

.main4 .box-search{
  display: flex;
  padding-top:10px;
  padding-bottom:10px;

}
.box-search .input5{
  padding-right:10px;
}

.bread4{
  padding-top:10px;
  padding-bottom: 10px;
  padding-left: 20px;
  background-color: #eceeef;
}
</style>

总结

到此这篇关于使用Mockjs模拟接口实现增删改查、分页及多条件查询的文章就介绍到这了,更多相关Mockjs增删改查、分页及多条件查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用mock.js随机数据和使用express输出json接口的实现方法

    前端项目都会用到后端的接口,但当后台接口没有写好的时候,这时候可以用mock.js先随机生成一些假数据来调试页面 安装mock.js 先用express创建一个nodejs的web项目,名字假如是 demo ,这里就不说了 yarn add mockjs 使用 const Mock = require('mockjs') var data = Mock.mock({ 'list|2': [{ 'id|+1': 1, 'color': '@color()', 'date': '@datetime(

  • 使用Mockjs模拟接口实现增删改查、分页及多条件查询

    目录 一.什么是Mock? 二.使用Mock有什么好处 三.安装Mock 四.效果图 五.使用Mock模拟接口实现增删改查.分页.多条件查询 总结 一.什么是Mock? mock官网 mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法. 二.使用Mock有什么好处 生成随机数据,拦截 Ajax 请求 1️⃣前后端分离 让前端攻城师独立于后端进行开发. 2️⃣增加单元测试的真实性 通过随机数据,模拟各种场景. 3️⃣开发无侵入 不需要修改

  • SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增删改查分页)

    前言 说起整合自然离不开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4.Mybatis3 项目结构 SSM整合 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu

  • Mybatis入门指南之实现对数据库增删改查

    目录 前言 MyBatis 简介 优点 缺点 搭建第一个Mybatis程序 新建项目. 引入pom.xml依赖. 新建数据库数据表. 新建Student实体类. 配置Mybatis的配置文件. 创建StudentMapper.xml文件. 在config.xml中加入mapper. 调用Mybitis原生接口进行操作 增 删 改 查 总结 前言 我们关于Spring和Spring MVC的学习也有一段时间了,都还没有进行过数据库的操作,而在实际项目中数据库是必不可少的部分,所以我们接下来将来学习

  • js 如何实现对数据库的增删改查

    JavaScript操作数据库JS操作Access数据库,跟其他语言操作差不多,总结了一下习惯代码,仅供参考学习. 现在在F盘有文件abc.mdf,表名为Student,一共2个字段,Id数字类型主键,stuName文本类型,现对该表进行增删改查的操作: 1.查询 复制代码 代码如下: <HTML> <HEAD> <TITLE>数据查询</TITLE> <Script > var conn = new ActiveXObject("AD

  • Vue+Mock.js模拟登录和表格的增删改查功能

    前言 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰富 4.通过随机数据,模拟各种场景. 5 项目不背锅(等后端给接口的话可能会背锅) 等等优点,最后一条我加的. 第一步先安装mock.js npm install mockjs --save-dev 第二步使用 mock.js import Mock from 'mockjs' 哪里用就在哪里引入.我是在项目src/mock/index.js里面使用moc

  • Java编程通过list接口实现数据的增删改查代码示例

    List接口常用的实现ArrayList. 常用方法:add(Object obj)  增加一个元素                      add(int index,Object obj) 在指定索引位置添加元素                      remove(int index) 删除指定位置的元素                      remove(Objiect)  从列表中删除元素                      set(index,Object) 修改指定位

  • 利用python模拟sql语句对员工表格进行增删改查

    本文主要给大家介绍了关于python模拟sql语句对员工表格进行增删改查的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍: 具体需求: 员工信息表程序,实现增删改查操作: 可进行模糊查询,语法支持下面3种: select name,age from staff_data where age > 22                  多个查询参数name,age 用','分割 select * from staff_data where dept = 人事 select * from

  • 用js简单提供增删改查接口

    本周写实验,需要提供简单的后台接口对数据库进行增删改查,以前写后台只用过php和java,因为比较容易,用js写的也比较快,所以这次想用js实现简单的增删改查接口. 初始化 需要工具:nodejs 依赖:express,mysql,body-parser(这些都是npm的包) 为了能够解析js,需要下载nodejs,下载完nodejs,创建一个文件夹,使用npm init初始化,除了填写名字,一路确定下去,在文件夹下就会多出一个package.json文件. // package.json {

  • koa+mongoose实现简单增删改查接口的示例代码

    配合上一篇文章的联系人应用(https://www.jb51.net/article/161160.htm),实现配套的基于nodejs的后台增删改查接口 1. 所需工具 node.js mongoDB 2. 主要node模块 koa(https://koa.bootcss.com,一个nodejs的开发框架),mongoose(https://mongoosejs.com,mongDB操作工具) 3. 目录结构 4. 启动MongoDB 首先在MongoDB安装盘的根目录下(这里假设是D盘)新

  • node实现简单的增删改查接口实例代码

    node实现简单的增删改查接口的全部代码如下: // 数据存储在users.json文件中 const express = require("express"); const fs = require("fs"); const cors = require("cors"); const bodyParser = require("body-parser"); const app = express(); app.use(cor

随机推荐