首页前端开发其他前端知识如何使用Mockjs模拟接口实现增删改查、分页及多条件查询

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

时间2024-03-27 17:42:03发布访客分类其他前端知识浏览1574
导读:这篇文章给大家分享的是“如何使用Mockjs模拟接口实现增删改查、分页及多条件查询”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“如何使用Mockjs模拟接口实现增删改查、分页及多...
这篇文章给大家分享的是“如何使用Mockjs模拟接口实现增删改查、分页及多条件查询”,文中的讲解内容简单清晰,对大家认识和了解都有一定的帮助,对此感兴趣的朋友,接下来就跟随小编一起了解一下“如何使用Mockjs模拟接口实现增删改查、分页及多条件查询”吧。

一、什么是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模拟接口实现增删改查、分页及多条件查询”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

接口

若转载请注明出处: 如何使用Mockjs模拟接口实现增删改查、分页及多条件查询
本文地址: https://pptw.com/jishu/654376.html
在java中怎么能实现九九乘法表呢 怎么在java中将数组转为list集合呢?

游客 回复需填写必要信息