<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
mock測試就是在測試過程中,對於某些不容易構造或者不容易獲取的物件,用一個虛擬的物件來建立以便測試的測試方法。
生成亂資料,攔截 Ajax 請求
1️⃣前後端分離
讓前端攻城師獨立於後端進行開發。
2️⃣增加單元測試的真實性
通過亂資料,模擬各種場景。
3️⃣開發無侵入
不需要修改既有程式碼,就可以攔截 Ajax 請求,返回模擬的響應資料。
4️⃣用法簡單
符合直覺的介面。
5️⃣資料型別豐富
支援生成隨機的文字、數位、布林值、日期、郵箱、連結、圖片、顏色等。
6️⃣方便擴充套件
支援支援擴充套件更多資料型別,支援自定義函數和正則。
//安裝最新版本mockjs npm install mockjs
使用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=">"> <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增刪改查、分頁及多條件查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45