詳解vue-cli 本地開發(fā)mock數(shù)據(jù)使用方法
vue-cli 中可以通過配置 proxyTable 解決開發(fā)環(huán)境的跨域問題,具體可以參考這篇文章:Vue-cli proxyTable 解決開發(fā)環(huán)境的跨域問題
如果后端接口尚未開發(fā)完成,前端開發(fā)一般使用mock數(shù)據(jù)。
mock方法有多種多樣,這里給出兩種:
方法一: 使用express搭建靜態(tài)服務
mock數(shù)據(jù)寫在json文件中,proxyTable 里將接口代理到具體mock數(shù)據(jù)json文件上。
具體方法:
創(chuàng)建 mock 文件夾
build/dev-server.js 中添加如下代碼

npm run dev 啟動后,可以通過 http://localhost:8080/mock/db.json 訪問數(shù)據(jù),proxyTable對應設置代理即可(代理設置方法與解決跨域方法相似)

方法二 使用 JSON Server 搭建 Mock 服務器
JSON Server 是一個創(chuàng)建偽RESTful服務器的工具,具體使用方法可以看官方文檔,這里直接講在vue-cli 中的用法。
配置流程
全局安裝 $ npm install -g json-server
項目目錄下創(chuàng)建 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/
發(fā)現(xiàn) db.json 下第一級 json 對象被解析成為可訪問路徑

GET請求具體路徑 如:http://localhost:3000/posts 可獲取數(shù)據(jù)

faker.js 批量生成偽數(shù)據(jù)
如果需要大量的偽數(shù)據(jù),手動構造比較費時費力,可以使用faker.js 批量生成。faker.js 的具體使用參見官方文檔,這里做一個示例。
$ cnpm install faker -G 全局安裝 faker
mock 目錄下創(chuàng)建 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組偽數(shù)據(jù)

添加中間件
json server 使用 RESTful 架構,GET請求可以獲取數(shù)據(jù),POST 請求則是添加數(shù)據(jù)。
在開發(fā)過程中,有時候想直接模擬獲取POST請求返回結果,可以添加 express 中間件 將POST請求轉為GET請求。
mock 目錄下創(chuàng)建 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請求了

其他需求也可以通過添加不同的中間件實現(xiàn)。
代理設置
在 config/index.js 的 proxyTable 將請求映射到 http://localhost:3000

代碼中添加請求以測試效果

$ npm run mockdev 啟動帶mock 數(shù)據(jù)的本地服務
結果如下:

整體代碼:https://github.com/carrotz/vue-cli-mock
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
vue?cli3配置image-webpack-loader方式
這篇文章主要介紹了vue?cli3配置image-webpack-loader方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
關于ELement?UI時間控件el-date-picker誤差8小時的問題
本文探討了在使用Vue前端框架配合ElementUI開發(fā)時,遇到日期時間選擇器DateTimePicker的時間同步問題,通過揭示中國東八區(qū)與格林威治時間的時差,作者提供了設置value-format屬性的解決方案,以確保后端接收到的正確時間格式2024-08-08
vue3+element?plus中利用el-menu如何實現(xiàn)路由跳轉
這篇文章主要給大家介紹了關于vue3+element?plus中利用el-menu如何實現(xiàn)路由跳轉的相關資料,在Vue?Router中我們可以使用el-menu組件來實現(xiàn)菜單導航,通過點擊菜單項來跳轉到不同的路由頁面,需要的朋友可以參考下2023-12-12
一文讀懂vue動態(tài)屬性數(shù)據(jù)綁定(v-bind指令)
這篇文章主要介紹了vue動態(tài)屬性數(shù)據(jù)綁定(v-bind指令)的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下2020-07-07
vue3通過ref獲取子組件defineExpose的數(shù)據(jù)和方法
defineExpose是Vue3中新增的選項,用于向父組件暴露子組件內部的屬性和方法,通過defineExpose,子組件可以主動控制哪些屬性和方法可以被父組件訪問,本文主要介紹了vue3通過ref獲取子組件defineExpose的數(shù)據(jù)和方法,需要的朋友可以參考下2023-10-10

