详解vue-cli 本地开发mock数据使用方法


Posted in Javascript onMay 29, 2018

vue-cli 中可以通过配置 proxyTable 解决开发环境的跨域问题,具体可以参考这篇文章:Vue-cli proxyTable 解决开发环境的跨域问题

如果后端接口尚未开发完成,前端开发一般使用mock数据。

mock方法有多种多样,这里给出两种:

方法一: 使用express搭建静态服务

mock数据写在json文件中,proxyTable 里将接口代理到具体mock数据json文件上。

具体方法:

创建 mock 文件夹

build/dev-server.js 中添加如下代码

详解vue-cli 本地开发mock数据使用方法

npm run dev 启动后,可以通过 http://localhost:8080/mock/db.json 访问数据,proxyTable对应设置代理即可(代理设置方法与解决跨域方法相似)

详解vue-cli 本地开发mock数据使用方法

方法二 使用 JSON Server 搭建 Mock 服务器

JSON Server 是一个创建伪RESTful服务器的工具,具体使用方法可以看官方文档,这里直接讲在vue-cli 中的用法。

配置流程

全局安装 $ npm install -g json-server

项目目录下创建 mock 文件夹

mock 文件夹下添加 db.json 文件,内容如下

{
 "posts": [
 { "id": 1, "title": "json-server", "author": "typicode" }
 ],
 "comments": [
 { "id": 1, "body": "some comment", "postId": 1 }
 ],
 "profile": { "name": "typicode" }
}

package.json 添加命令

"mock": "json-server --watch mock/db.json",
 "mockdev": "npm run mock & npm run dev"

详解vue-cli 本地开发mock数据使用方法

启动 mock 服务器

$ npm run mock 命令 运行 mock server

访问 http://localhost:3000/

发现 db.json 下第一级 json 对象被解析成为可访问路径

详解vue-cli 本地开发mock数据使用方法

GET请求具体路径 如:http://localhost:3000/posts 可获取数据

详解vue-cli 本地开发mock数据使用方法

faker.js 批量生成伪数据

如果需要大量的伪数据,手动构造比较费时费力,可以使用faker.js 批量生成。faker.js 的具体使用参见官方文档,这里做一个示例。

$ cnpm install faker -G 全局安装 faker

mock 目录下创建 faker-data.js,内容如下

module.exports = function () {
 var faker = require("faker");
 faker.locale = "zh_CN";
 var _ = require("lodash");
 return {
  people: _.times(100, function (n) {
   return {
    id: n,
    name: faker.name.findName(),
    avatar: faker.internet.avatar()
   }
  }),
  address: _.times(100, function (n) {
   return {
    id: faker.random.uuid(),
    city: faker.address.city(),
    county: faker.address.county()
   }
  })
 }
}

$ json-server mock/faker-data.js 在 json server 中使用 faker

请求 http://localhost:3000/address 可以获取到随机生成的100组伪数据

详解vue-cli 本地开发mock数据使用方法

添加中间件

json server 使用 RESTful 架构,GET请求可以获取数据,POST 请求则是添加数据。
在开发过程中,有时候想直接模拟获取POST请求返回结果,可以添加 express 中间件 将POST请求转为GET请求。

mock 目录下创建 post-to-get.js,内容如下

module.exports = function (req, res, next) {
 req.method = "GET";
 next();
}

启动命令添加运行中间件 --m mock/post-to-get.js

"mock": "json-server --watch mock/db.json --m mock/post-to-get.js",

重新启动服务,POST请求就被转换为GET请求了

详解vue-cli 本地开发mock数据使用方法

其他需求也可以通过添加不同的中间件实现。

代理设置

config/index.js proxyTable 将请求映射到 http://localhost:3000

详解vue-cli 本地开发mock数据使用方法

代码中添加请求以测试效果

详解vue-cli 本地开发mock数据使用方法

$ npm run mockdev 启动带mock 数据的本地服务

结果如下:

详解vue-cli 本地开发mock数据使用方法

整体代码:https://github.com/carrotz/vue-cli-mock

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

Javascript 相关文章推荐
载入进度条 效果
Jul 08 Javascript
JQuery 动态扩展对象之另类视角
May 25 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
Sep 05 Javascript
javascript中的toFixed固定小数位数 简单实例分享
Jul 12 Javascript
JavaScript匿名函数与委托使用示例
Jul 22 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
js实现倒计时及时间对象
Nov 15 Javascript
浅谈javascript中的 “ && ” 和 “ || ”
Feb 02 Javascript
Angular Renderer (渲染器)的具体使用
May 03 Javascript
详解vuex 渐进式教程实例代码
Nov 27 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
json.stringify()与json.parse()的区别以及用处
Jan 25 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 #Javascript
js统计页面上每个标签的数量实例代码
May 29 #Javascript
浅谈React的最大亮点之虚拟DOM
May 29 #Javascript
深入理解Vue Computed计算属性原理
May 29 #Javascript
javascript、php关键字搜索函数的使用方法
May 29 #Javascript
Vue路由切换时的左滑和右滑效果示例
May 29 #Javascript
Vue 组件传值几种常用方法【总结】
May 28 #Javascript
You might like
那些年一起学习的PHP(一)
2012/03/21 PHP
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
Postman如何实现参数化执行及断言处理
2020/07/28 Javascript
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
python多重继承实例
2014/10/11 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
Python的几种主动结束程序方式
2019/11/22 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
荷兰街头时尚之家:Funkie House
2019/03/18 全球购物
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
运动会广播稿200字
2015/08/19 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
教你如何使用Python实现二叉树结构及三种遍历
2021/06/18 Python