美文网首页web前端转载的~暂时看不懂前端
vue-cli 本地开发mock数据使用方法

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

作者: 萝卜粥_Carrot | 来源:发表于2017-03-02 16:59 被阅读26754次

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

如果后端接口尚未开发完成,前端开发一般使用mock数据。
mock方法有多种多样,这里给出两种:

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

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

  • 创建 mock 文件夹
  • build/dev-server.js 中添加如下代码

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

方法二 使用 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"

启动 mock 服务器

$ npm run mock 命令 运行 mock server
访问 http://localhost:3000/
发现 db.json 下第一级 json 对象被解析成为可访问路径

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

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组伪数据

添加中间件

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请求了

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

代理设置

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

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

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

结果如下:


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

相关文章

  • 试一试mockjs

    注:本文主要学习于vue-cli 本地开发mock数据使用方法,加上我自己的理解和实践。 实习了半年,一直觉得公司...

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

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

  • 仿写饿了么app之vue2.0版本笔记2

    第四部分:mock数据部分vue开发请求本地数据的配置,早期的vue-cli在bulid目录下面有dev-serv...

  • vue-cli本地mock数据

    在dev-server.js中添加下面代码 over! 顺便提一下var router=express.Route...

  • Vue2.x实战饿了么项目笔记(一)

    mack数据 如果后端接口尚未开发完成,前端开发一般使用mock数据。注意:新版的vue-cli 自动搭建的bui...

  • Easy-mock

    介绍一款前端mock神器和本地部署方法。 在前端开发中,常见的mock方式有: 直接将数据写在代码中 利用Char...

  • 如何mock数据

    mock数据有搭建本地服务器mock和通过线上网站mock数据两种方法:1.搭建本地服务器安装node.js,使用...

  • axios请求封装

    axios封装 简单设置本地mock数据

  • vue本地开发mock数据.md

    [TOC] 一、为什么要mock数据? VUE项目开发过程中,前后端是完全分离,后端负责提供数据,前端负责数据展示...

  • vue本地开发mock数据.md

    一、为什么要mock数据? 二、如何mock数据? 三、webpack本地代理配置 四、mockjs使用 五、ea...

网友评论

  • f0a56ac06610:请问,为什么我运行npm run mock后数据无法访问呢?我打开楼主的链接也是无法访问。
  • MuttFish:如何让请求访问本地搭建的服务器,而不去请求mock的数据。出现如下错误信息:
    at createErrorResponse (utils.js?e2b2:108)
    at Object.settle (utils.js?e2b2:88)
    at handleRequest (handle_request.js?0cb9:57)
    at eval (index.js?bed5:16)
    at Promise (<anonymous>)
    at MockAdapter.eval (index.js?bed5:15)
    at dispatchRequest (dispatchRequest.js?91bc:52)
    at <anonymous>
    谢谢!
    萝卜粥_Carrot:config/index.js 里

    ```
    proxyTable: {
    '/api/': {
    target: 'http://localhost:3000', //改成你的服务器地址
    changeOrigin:true,
    pathRewrite: {
    '^/api': ''
    }
    },
    },
    ```
  • 0c84acb53f23:在package.json上增加 "mockdev": "npm run mock & npm run dev"但是npm run dev压根不会运行
    0ab5a31a58c9:@Daidai酱 window
    0ab5a31a58c9:windon系统可以用吗 如果可以 最后mxios那块应该怎么写呢
    0c84acb53f23:发现有“&”连接起来的话意思是两个任务平行执行,
    如果是用“&&”是先后执行的意思,
    而实际上上面两种连接符都无法使两个任务都执行,只有第一个执行而已。
    所以最后我用“|”了,然后就执行了。
    执行虽然是执行了,但是还是不知道为什么?

本文标题:vue-cli 本地开发mock数据使用方法

本文链接:https://www.haomeiwen.com/subject/texkgttx.html