详解在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 相关文章推荐
document.designMode的功能与使用方法介绍
Nov 22 Javascript
javascript中判断一个值是否在数组中并没有直接使用
Dec 17 Javascript
使用jQuery插件创建常规模态窗口登陆效果
Aug 23 Javascript
JS连连看源码完美注释版(推荐)
Dec 09 Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
jQuery中(function($){})(jQuery)详解
Jul 15 Javascript
jQuery中常用的遍历函数用法实例总结
Sep 01 Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 Javascript
vue中动态设置meta标签和title标签的方法
Jul 11 Javascript
解决layui 复选框等内置控件不显示的问题
Aug 14 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
Aug 16 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
Aug 19 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 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php debug 安装技巧
2011/04/30 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
PHP内置加密函数详解
2016/11/20 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
Document对象内容集合(比较全)
2010/09/06 Javascript
javascript正则表达式中参数g(全局)的作用
2010/11/11 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
JQuery 控制内容长度超出规定长度显示省略号
2014/05/23 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟
2018/11/28 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
2020/12/29 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python变量作用范围实例分析
2015/07/07 Python
详解python编译器和解释器的区别
2019/06/24 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
大型车展策划方案
2014/02/01 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
村抢险救灾方案
2014/05/09 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
单位租房协议书样本
2014/10/30 职场文书
邀请书模板
2015/02/02 职场文书
MySQL派生表联表查询实战过程
2022/03/20 MySQL
部分武汉产收音机展览
2022/04/07 无线电
Java异常体系非正常停止和分类
2022/06/14 Java/Android