vue-cli 本地開發mock數據使用方法

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,973評論 19 139
  • 一、創建項目 使用vue開發項目時,通過腳手架工具vue-cli可以很方便的構建項目,熱重載、保存時靜態檢查以及可...
    一戀蝶夢閱讀 8,773評論 1 35
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,466評論 25 708
  • 一直以來,人們都說要做自己。可是當我們面對諸多問題、諸多人、諸多事情的時候真的很難。我們都說做自己,不去管別人,但...
    WXNL閱讀 567評論 4 5
  • 今日心得 1.來自張瀟雨 因為1999年互聯網時代的到來,為創業而創業屬于“命題作文”的攜程,竟然能寫得如此成功:...
    Pheeb閱讀 335評論 0 0