Vue驿站前端Vue专辑

使用axios解决跨域、显示mooc数据(正确版)

2020-02-26  本文已影响0人  edisonTechBlog

天杀的 vue cli 4 。一晚上就弄这个了~~~~。之前的错误版该说的都说了,这次直接贴正确代码。不过有几点要先说。

1.首先,不懂的一定要先看vue.config.js配置的官网:https://cli.vuejs.org/zh/config/#devserver-proxy
2.之前在vue cli 2中,显示mooc和打印mooc都是在vue组件中写的,但是现在是直接在这个配置文件中写。
3.还有一些话写在了代码里

vue只看关键部分

    methods:{
        getHomeInfo(){
            //首先 访问8080, axios去请求这么一个路径  
            //接下来,这个路径会到 vue.config.js中
            axios.get("/api/index.json").then(this.getHomeInfoSucc)
        },
        getHomeInfoSucc(res){
            //这里可以在控制台中打印
            console.log(res)
        }
    },
    mounted(){
        this.getHomeInfo()
    }

接下来是重头戏:vue.config.js

const path = require('path');
const mockdata=require("./mock/index.json")

function resolve(dir) {
    return path.join(__dirname, dir);
}


module.exports = {
    lintOnSave: true,
    chainWebpack: (config) => {
        config.resolve.alias
        .set('styles',resolve('src/assets/styles'))
        // 这里只写了两个个,你可以自己再加,按这种格式.set('', resolve(''))
    },
    devServer:{
        //当Home.vue中的路径过来时,/api/index.json   因为是api开头,
        //所以这个路径被跨域到 http://localhost:8080/mock/index.json 
        //即实际上访问8080时,访问的是http://localhost:8080/mock/index.json
        //这样就拿到了mooc的数据。
        //拿到之后,就回到vue开始执行then。   
        //到此结束!!!!
        proxy: {
            '/api': {
                target: 'http://localhost:8080',
                pathRewrite:{
                    '^/api':'/mock'
                }
            },
            '/foo': {
            target: 'http://localhost:8080'
            }
        },
        //用来显示假数据,即如果直接访问 http://localhost:8080/api/index.json
        //就会在页面打印mock数据
        port:8080,
        before(app){
            app.get('/api/index.json',(req,res,next)=>{
                res.json(mockdata)
            })
        }
    }
};
上一篇下一篇

猜你喜欢

热点阅读