• vue2学习之axios在项目中的优化


    目录

    4 axios 在项目中的优化

    4.1 axios 的简单用法

    4.2 下面我们把axios挂载到vue原型上:

    4.3 配置axios请求根路径


    4 axios 在项目中的优化

    4.1 axios 的简单用法

    先安装axios: npm i axios -S

    然后在项目中的js标签顶部导入 import axios from 'axios'

    定义事件触发他,具体代码如下:

    1. //get请求
    2. <template>
    3.  <div class="left-container">
    4.    <h3>Left组件h3>
    5.    <button @click="getAxios">Leftgetbutton>
    6.  div>
    7. template>
    8. <script>
    9. import axios from 'axios'
    10. export default {
    11.  methods: {
    12.    async getAxios() {
    13.      const { data: res } = await axios.get(
    14.        'http://www.liulongbin.top:3006/api/get'
    15.     )
    16.      console.log(res)
    17.   }
    18. }
    19. }
    20. script>

    1. //post请求
    2. <template>
    3.  <div class="Right-container">
    4.    <h3>Right组件h3>
    5.    <button @click="postInfo">post请求button>
    6.  div>
    7. template>
    8. <script>
    9. import axios from 'axios'
    10. export default {
    11.  methods: {
    12.    async postInfo() {
    13.      const { data: res } = await axios.post(
    14.        'http://www.liulongbin.top:3006/api/post',
    15.       { name: 'zs', age: 20 }
    16.     )
    17.      console.log(res)
    18.   }
    19. }
    20. }
    21. script>

    但是这样做的话有个问题,在开发项目中,如果频繁的用到axios请求,每次都要导入,根路径也一样,代码冗余。

    所以我们可以把axios挂载到vue的原型上(在main.js中配置),在需要使用的时候直接就 this.axios 来用使用,就不用每次导入了!

    4.2 下面我们把axios挂载到vue原型上:

    • 在main.js中

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. // 导入axios
    4. import axios from 'axios'
    5. Vue.config.productionTip = false
    6. // 把axios挂载到vue原型上
    7. Vue.prototype.axios = axios
    8. new Vue({
    9.  render: (h) => h(App)
    10. }).$mount('#app')
    • 这个时候就可以不用导入axios了,在使用的时候可以在原型上找到这个axios,用this.axios就可以使用了!

      1. <script>
      2. // import axios from 'axios'
      3. export default {
      4.  methods: {
      5.    async getAxios() {
      6.      const { data: res } = await this.axios.get(
      7.        'http://www.liulongbin.top:3006/api/get'
      8.     )
      9.      console.log(res)
      10.   }
      11. }
      12. }
      13. script>

    可以发现上面两种方法都是可以获取数据的:

     

    在开发中命名可以这样($http)

    在vue中内置变量名以$开头,这里可以使用 $http 来命名,显得装B一点!哈哈哈!

    在请求的时候就以this.$http来请求,当然这个变量名可以随便取,没有影响的!!

    1. // 把axios挂载到vue原型上
    2. // Vue.prototype.axios = axios
    3. // 在vue中内置变量名以$开头,这里可以使用 $http 来命名,显得装B一点!哈哈哈
    4. Vue.prototype.$http = axios

    4.3 配置axios请求根路径

    为什么要配置请求根路径,因为如果我们大量发起请求,然后请求的目标网址都有有一个相同的前缀,那么每次都输入全部网址来请求就会代码冗余!还有不利于后期的维护。

    配置一个请求根路径,每次请求的时候就只需要关心目标网址的后缀,更好的对接开发文档和后端提供的接口。

    在 main.js 中全局配置 axios 的请求根路径:

    1. import Vue from 'vue'
    2. import App from './App.vue'
    3. // 导入axios
    4. import axios from 'axios'
    5. Vue.config.productionTip = false
    6. // 全局配置axios的请求根路径
    7. axios.defaults.baseURL = 'http://www.liulongbin.top:3006'
    8. // 把axios挂载到vue原型上
    9. // Vue.prototype.axios = axios
    10. // 在vue中内置变量名以$开头,这里可以使用 $http 来命名,显得装B一点!哈哈哈
    11. Vue.prototype.$http = axios
    12. new Vue({
    13.  render: (h) => h(App)
    14. }).$mount('#app')

    在使用请求的时候这样:

    1. <script>
    2. // import axios from 'axios'
    3. export default {
    4.  methods: {
    5.    async getAxios() {
    6.      const { data: res } = await this.$http.get(
    7.        '/api/get'
    8.     )
    9.      console.log(res)
    10.   }
    11. }
    12. }
    13. script>

    这样的缺点是不利于 API 接口的复用!

    路由正好可以解决这个缺点。

    星月前端博客https://xingyue.vercel.app/

    记录前端学习笔记,欢迎收藏或者提意见。

     

  • 相关阅读:
    给el-form-item,添加key的场景
    Cisco简单配置(十三)—链路聚合
    【计算机网络】 集线器、网桥、交换机、路由器看这一篇就懂了。实验: 路由器的作用,以及没有路由器的情况下,如何用三层交换机实现路由器的功能
    RichView TRVStyle
    Java学习之包访问修饰符
    如何通过puppetter实现PDF聚合阅读器初始模型以及产品思维构想
    企业架构LNMP学习笔记37
    分布式中间件(五):RocketMQ 源码
    Windows下免杀思路总结
    C++ map容器
  • 原文地址:https://blog.csdn.net/qq_61950936/article/details/126045272