详解在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 相关文章推荐
Jquery+WebService 校验账号是否已被注册的代码
Jul 12 Javascript
基于JQuery 选择器使用说明介绍
Apr 18 Javascript
HTML Color Picker(js拾色器效果)
Aug 27 Javascript
noty ? jQuery通知插件全面解析
May 18 Javascript
基于jquery插件编写countdown计时器
Jun 12 Javascript
BootStrap实现手机端轮播图左右滑动事件
Oct 13 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
Dec 23 Javascript
微信小程序 动态绑定事件并实现事件修改样式
Apr 13 Javascript
在React中如何优雅的处理事件响应详解
Jul 24 Javascript
element-ui table span-method(行合并)的实现代码
Dec 20 Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 Javascript
jquery实现的放大镜效果示例
Feb 24 jQuery
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中养成7个面向对象的好习惯
2010/01/28 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
PHP用PDO如何封装简单易用的DB类详解
2017/07/30 PHP
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
2007/04/20 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
JS实现的自定义水平滚动字体插件完整实例
2016/06/17 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
Python去掉字符串中空格的方法
2014/03/11 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
聚美优品的广告词
2014/03/14 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
优秀的个人求职信范文
2014/05/09 职场文书
元旦联欢会策划方案
2014/06/11 职场文书
激励口号大全
2014/06/17 职场文书
资产运营委托书范本
2014/10/16 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
学校运动会加油词
2015/07/18 职场文书
小学运动会报道稿
2015/07/22 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书