vue-cli3中使用express配置本地數據接口


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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM