详解在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 数组运用实现代码
Apr 13 Javascript
javascript中&quot;/&quot;运算符常见错误
Oct 13 Javascript
关于ExtJS4.1:快捷键支持的问题
Apr 24 Javascript
获取数组中最大最小值方法js代码(自写)
Aug 12 Javascript
javascript实现存储hmtl字符串示例
Apr 25 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
js实现匹配时换色的输入提示特效代码
Aug 17 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
setTimeout函数的神奇使用
Feb 26 Javascript
js实现rem自动匹配计算font-size的示例
Nov 18 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
jQuery编写QQ简易聊天框
Aug 27 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
2012/12/29 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
php判断是否为json格式的方法
2014/03/04 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
2016/01/08 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHP中16个高危函数整理
2019/09/19 PHP
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
2015/12/25 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
简单实现IONIC购物车功能
2017/01/10 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
从零学Python之入门(三)序列
2014/05/25 Python
Python表示矩阵的方法分析
2017/05/26 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
广告学专业毕业生自荐信
2014/05/28 职场文书
小学学校评估方案
2014/06/08 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
聘任书格式及范文
2015/09/21 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
Python进程池与进程锁之语法学习
2022/04/11 Python
Mysql中@和@@符号的详细使用指南
2022/06/05 MySQL