详解在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性能最佳实践的讨论,与求教
Mar 30 Javascript
JS 毫秒转时间示例代码
Sep 22 Javascript
JS复制到剪贴板示例代码
Oct 30 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
Jul 07 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
详解如何用webpack打包一个网站应用项目
Jul 12 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
mock.js实现模拟生成假数据功能示例
Jan 15 Javascript
vue axios封装httpjs,接口公用配置拦截操作
Aug 11 Javascript
Vue axios 跨域请求无法带上cookie的解决
Sep 08 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
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
星际原理概述
2020/03/04 星际争霸
php根据年月获取季度的方法
2014/03/31 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
2016/04/11 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
nodejs导出excel的方法
2015/06/30 NodeJs
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
jQuery仿IOS弹出框插件
2017/02/18 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
[01:04:49]KG vs LGD 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
Golang与python线程详解及简单实例
2017/04/27 Python
Python正则表达式知识汇总
2017/09/22 Python
Flask之flask-script模块使用
2018/07/26 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
Java程序员面试90题
2013/10/19 面试题
爱心捐书活动总结
2014/07/05 职场文书
小学家长学校培训材料
2014/08/24 职场文书
领导干部保密承诺书
2014/08/30 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
浅析Python中的套接字编程
2021/06/22 Python
Python MNIST手写体识别详解与试练
2021/11/07 Python
JavaScript中MutationObServer监听DOM元素详情
2021/11/27 Javascript