详解在vue-cli项目中使用mockjs(请求数据删除数据)


Posted in Javascript onOctober 23, 2017

在我们的生产实际中,后端的接口往往是较晚才会出来,于是我们的前端的许多开发都要等到接口给我们才能进行,这样对于我们前端来说显得十分的被动,于是有没有可以制造假数据来模拟后端接口呢,答案是肯定的。于是今天我们来介绍一款非常强大的插件Mock.js ,可以非常方便的模拟后端的数据,也可以轻松的实现增删改查这些操作,在后台数据完成之后,你所做的只是去掉mockjs:停止拦截真实的ajax,仅此而已。

搭建一个vue项目

# 全局安装 vue-cli
$ npm install --global vue-cli
# 创建一个基于 webpack 模板的新项目
vue init webpack vue-mock
$ cd my-project
# 安装依赖
$ npm install

安装mockjs

npm install mockjs --save-dev

开启项目

npm run dev

创建一个mockjs文件夹以及mockjs,并且在main.js引入这个文件

此时可以看到像这样的一个项目结构

详解在vue-cli项目中使用mockjs(请求数据删除数据)

mockjs的使用

在项目中的mock.js文件中,写入模拟的数据,此时我们可以参照一下mockjs的文档。

// 使用 Mock
var Mock = require('mockjs')
var data = Mock.mock({
  // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
  'list|1-10': [{
    // 属性 id 是一个自增数,起始值为 1,每次增 1
    'id|+1': 1
  }]
})
// 输出结果
console.log(JSON.stringify(data, null, 4))

接下来可以做我们想要做的事了

在mock.js中模拟简单的一些数据

const Mock = require('mockjs');
// 获取 mock.Random 对象
 const Random = Mock.Random;
 // mock一组数据
 const produceData = function (opt) {
  console.log('opt', opt);
  let articles = [];
  for (let i = 0; i < 30; i++) {
   let newArticleObject = {
    title: Random.csentence(5, 30), // Random.csentence( min, max )
    thumbnail_pic_s: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
    author_name: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
    date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
   }
   articles.push(newArticleObject)
  }
  return {
   data: articles
  }
 }
Mock.mock('/news', /post|get/i, produceData);//当post或get请求到/news路由时Mock会拦截请求并返回上面的数据

在vue中请求

methods: {
   setNewsApi: function() {
    this.$http.post("/news", "type=top&key=123456").then(res => {
     console.log(res.data);
 
     this.newsListShow = res.data.data;
    });
   }
  }

效果预览

详解在vue-cli项目中使用mockjs(请求数据删除数据)

再做一个删除的处理

模拟数据

let arr = []
 for (let i = 0; i < 30; i++) {
  let newArticleObject = {
   name: Random.cname(), // Random.cname() 随机生成一个常见的中文姓名
   content: Random.csentence(5, 30), // Random.csentence( min, max )
   id: i
  }
  arr.push(newArticleObject);
 }
 let list = function (options) {
  let rtype = options.type.toLowerCase(); //获取请求类型
  switch (rtype) {
   case 'get':
    break;
   case 'post':
    let id = parseInt(JSON.parse(options.body).params.id) //获取删除的id
    arr = arr.filter(function(val){
     return val.id!=id;//把这个id对应的对象从数组里删除
    });
    break;
   default:
  }
  return {
   data: arr
  } //返回这个数组,也就是返回处理后的假数据
 }
 Mock.mock('/list', /get|post/i, list);//get用于请求数据,post用于删除数据

vue中使用

methods: {
   setNewsApi: function() {
    this.$http.get("/list", "").then(res => {
     this.data = res.data.data;
    });
   },
   deleteList(data) { //删除数据
    let id = data.id;
    this.$http.post('/list', {
      params: {
       id: id
      }
     }).then(function(res) {
      console.log(res);
      this.data = res.data.data;
      alert(data.name + '删除成功');
     }.bind(this))
     .catch(function(error) {
      console.log(error)
     });
   },
  }

效果预览

 详解在vue-cli项目中使用mockjs(请求数据删除数据)

github代码地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
为何JS操作的href都是javascript:void(0);呢
Nov 12 Javascript
Jquery操作Ajax方法小结
Nov 29 Javascript
举例讲解如何判断JavaScript中对象的类型
Apr 22 Javascript
js中scrollTop()方法和scroll()方法用法示例
Oct 03 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
ES6正则表达式扩展笔记
Jul 25 Javascript
浅谈ECMAScript6新特性之let、const
Aug 02 Javascript
深入浅析javascript继承体系
Oct 23 Javascript
vue2中使用less简易教程
Mar 27 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
ECharts地图绘制和钻取简易接口详解
Jul 12 Javascript
angularjs实现天气预报功能
Jun 16 #Javascript
angular.js实现购物车功能
Oct 23 #Javascript
使用store来优化React组件的方法
Oct 23 #Javascript
node文件批量重命名的方法示例
Oct 23 #Javascript
详解vue 实例方法和数据
Oct 23 #Javascript
深入浅析javascript继承体系
Oct 23 #Javascript
Vue.js组件通信的几种姿势
Oct 23 #Javascript
You might like
php 获取当前访问的url文件名的方法小结
2010/02/08 PHP
php版本的cron定时任务执行器使用实例
2014/08/19 PHP
php求今天、昨天、明天时间戳的简单实现方法
2016/07/28 PHP
jquery序列化方法实例分析
2015/06/10 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
关于微信中a链接无法跳转问题
2016/08/02 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
jquery实现放大镜简洁代码(推荐)
2017/06/08 jQuery
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
JS中精巧的自动柯里化实现方法
2017/12/12 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
多个Vue项目部署到服务器的步骤记录
2020/10/22 Javascript
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
使用python接入微信聊天机器人
2020/03/31 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
python opencv肤色检测的实现示例
2020/12/21 Python
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
环境监测与治理技术专业求职信
2014/07/06 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android