1.在項目的根目錄中增加mock.js文件,該文件作用的是關於express配置本地服務,代碼如下
1 const express = require('express') 2 const app = express() 3 const apiData = require('./data.json') 4 const seller = apiData.seller 5 const goods = apiData.goods 6 const ratings = apiData.ratings 7 const apiRouters = express.Router() 8 //使用express路由獲得本地數據 9 apiRouters.get('/sellers',(req,res) => { 10 res.json({ 11 stu: 0, 12 data: seller 13 }) 14 }) 15 apiRouters.get('/goods',(req,res) => { 16 res.json({ 17 stu: 0, 18 data: goods 19 }) 20 }) 21 apiRouters.get('/ratings',(req,res) => { 22 res.json({ 23 stu: 0, 24 data: ratings 25 }) 26 }) 27 app.use('/',apiRouters) 28 app.listen(8081,()=>{ 29 console.log('mock data is running...'); 30 })
2.在vue.config.js中配置webpack
1 //webpack自定義配置,配置獲取本地數據接口,使用proxy解決數據接口的跨域問題 2 configureWebpack: (config) => { 3 if (process.env.NODE_ENV === 'production') { 4 config.mode = 'production' 5 } else { 6 config.mode = 'development' 7 require('./mock') 8 config.devServer = { 9 proxy:{//使用proxy解決跨域問題 10 '/api': {// 以 “/api” 開頭的 代理到 下邊的 target 屬性 的值 中 11 target: 'http://localhost:8081', 12 changeOrigin: true, 13 pathRewrite: {// 路徑重寫 14 '^/api': '/' // 這個意思就是以api開頭的,定向到哪里, 如果你的后邊還有路徑的話, 會自動拼接上 15 } 16 } 17 } 18 } 19 } 20 }
在api目錄中定義獲得本地數據的數據接口,目錄如下圖所示

config.js文件時關於公共變量的定義,封裝方法,以使用axios或的數據
1 export const ERR_OK = 0 2 import axios from 'axios' 3 let baseUrl = '' 4 if (process.env.NODE_ENV === 'development') { 5 baseUrl = process.env.VUE_APP_API 6 } else if(process.env.NODE_ENV === 'porduction'){ 7 baseUrl = process.env.production.BASE_URL 8 } 9 //將獲得的數據接口封裝為axios,便於使用promise 10 export function get(url){ 11 return function(params = {}){ 12 return axios.get(baseUrl + url,{ 13 params 14 }).then(res => { 15 const {stu,data} = res.data 16 if(stu === ERR_OK){ 17 return data 18 } 19 }).catch( e =>{ 20 }) 21 } 22 }
index.js文件時獲取數據的接口,在組件中使用
1 import {get} from './config' 2 const getSellers = get('/sellers') 3 const getGoods = get('/goods') 4 const getRatings = get('/ratings') 5 export { 6 getSellers, 7 getGoods, 8 getRatings 9 }
