8.4 SRE要懂点前端-http与跨域

Posted SRE说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.4 SRE要懂点前端-http与跨域相关的知识,希望对你有一定的参考价值。

    大家根据前面几篇文章的了解对VUE 应该有个基本的认识了接入下来进入最关键的环节如何请求http请求,并能在页面上渲染。


http跨域

    首先第一点,如果是外部请求一定要解决跨域的问题。

     在config/index.js这个文件里面的proxyTable字段

'/gettestdata': {target: 'http://0.0.0.0:8000',//后端接口地址
  changeOrigin: true,//是否允许跨越
  pathRewrite: {
    '^/gettestdata''http://0.0.0.0:8000/gettestdata',//重写,
  }
},

当你在浏览器中输入 http://localhost:8080/gettestdata

8.4 SRE要懂点前端-http与跨域

2 http请求 

第一步 安装

npm install --save axios


第二步 全局配置 

新建一个文件夹和三个文件 

8.4 SRE要懂点前端-http与跨域


config.js 定义 http的全局变量 

export const BASE_URL = '//localhost:8080/'
export const MAX_TIMEOUT = 100000;


instance.js axios的初始化

import axios from 'axios';
import {BASE_URL, MAX_TIMEOUT, STATUS_CODE} from './config';

const instance = axios.create({
  withCredentialsfalse,
  baseURL: BASE_URL,
  timeout: MAX_TIMEOUT
});

export default instance;


index.js 入口文件

import instance from './instance';
class APIHandler {
  constructor (instance) {
    this.instance = instance;
  }

  install (Vue) {
    Object.assign(Vue.prototype, {
      $httpthis.instance
    });
    Object.assign(Vue, {
      $httpthis.instance
    });
  }
}
export default new APIHandler(instance);



第三步正式使用

在action.js先定义两个函数get请求和post请求

const basePost = (url,params) => {
  if (!params) return;
  return Vue.$http.post(url, qs.stringify(params), {
    headers: {
      'Content-Type''application/x-www-form-urlencoded'
    }
  });
}

const baseGet = (url) => {
  return Vue.$http.get(url , qs.stringify({
  }), {
    headers: {
      'Content-Type''application/x-www-form-urlencoded'
    }
  });
}

8.4 SRE要懂点前端-http与跨域


第四步跟vuext结合

vuex

state.js 

8.4 SRE要懂点前端-http与跨域

getter.js

8.4 SRE要懂点前端-http与跨域

mutations.js

8.4 SRE要懂点前端-http与跨域


acitons.js

  getTestData(context){
    var url="http://localhost:8080/gettestdata"
    baseGet(url).then(response => {
      var overviewData=response.data.data;
      context.commit("updateTestData",overviewData);
    }).catch(err => {
      console.log(err);
    });
  },
}

第五步跟echart结合 

<template>
  <div>
    <div class="chart-demo" ref="echartdemo"></div>
  </div>
</template>

<script>
/* eslint-disable */
import echarts from 'echarts'
export default {
  beforeCreate(){
    this.$store.dispatch("getTestData")
  },
  components: {
  },
  computed: {
    optionDemo(){
      return this.optionsDemo()
    },
  },
  mounted() {
    this.initEchart();
  },
  methods: {
    initEchart(){
      this.eChart = echarts.init(this.$refs.echartdemo);
      this.eChart.setOption(this.optionDemo);
    },
    optionsDemo() {
      //let values = [5, 20, 36, 10, 10, 20]
      let values = this.$store.getters.getTestData
      return {
        title: {
          text"ECharts 入门示例"
        },
        tooltip: {},
        xAxis: {
          data: ["衬衫""羊毛衫""雪纺衫""裤子""高跟鞋""袜子"]
        },
        yAxis: {},
        series: [
          {
            name"销量",
            type"bar",
            data: values
          }
        ]
      };
    },
  },
  watch:{
    optionDemo:{
      watchtrue,
      handler (optionDemo) {
        this.eChart.setOption(optionDemo);
      },
      deep:true
    }
  }
};
</script>

<style scoped>
  .chart-demo{
    float:left;
    width100%;
    border1px solid green;
    height:400px
  }
</style>


这里说一下几个关键点

第一个提前发起一下请求获取数据

8.4 SRE要懂点前端-http与跨域

第二 把echart的数据换成自己的请求回来的数据

8.4 SRE要懂点前端-http与跨域

第三是定义watch函数,如果有变化需要重新渲染



最后是输入路径 http://localhost:8080/#/httpdemo 成功了 



恭喜你 截止到这一节 你已经学会了

1 vue的搭建

2 vuex的使用

3 elementui的使用

4 echart的使用

5 http请求的发送跟echart的联动


这其中的关键点基本走通了,剩下的就是修炼内功了。你如果想要链接前端更多的知识,需要不断的学习

以上是关于8.4 SRE要懂点前端-http与跨域的主要内容,如果未能解决你的问题,请参考以下文章

js之Ajax与跨域

进阶 | 一份详细的AJAX与跨域处理讲解

ajax(同源与跨域)

jquery .getJSON 跨域请求 报 Url错误 。callback=?用与跨域的参数,急啊 高手帮忙解决一下。

同源策略与跨域问题解决

axios的使用与跨域问题的解决