vue.js - axios 可以挂在Vue原型上 为啥还有个vue-axios?

查看:509
本文介绍了vue.js - axios 可以挂在Vue原型上 为啥还有个vue-axios?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如题,这个vue-axios有什么其他用途还是多余的?
因为

Vue.prototype.$http = axios
和
import Vueaxios from ‘vue-axios’
Vue.use(VueAxios,axios)

这二者效果都是一致,这样我就感觉vue-axios显得多余。希望知道多一点的朋友,能告诉我vue-axios存在的必要,非常感谢!

解决方案

何不看看vue-axios的源码,就一个文件:

index.js

(function () {

/**
 * Install plugin
 * @param Vue
 * @param axios
 */

function plugin(Vue, axios) {

  if (plugin.installed) {
    return
  }
  plugin.installed = true

  if (!axios) {
    console.error('You have to install axios')
    return
  }

  Vue.axios = axios

  Object.defineProperties(Vue.prototype, {

    axios: {
      get() {
        return axios
      }
    },

    $http: {
      get() {
        return axios
      }
    }

  })
}

if (typeof exports == "object") {
  module.exports = plugin
} else if (typeof define == "function" && define.amd) {
  define([], function(){ return plugin })
} else if (window.Vue && window.axios) {
  Vue.use(plugin, window.axios)
}

})();

首先是按照Vue的插件文档来写的,直接绑在原型链上不是不可以,如果像楼主你这样注册一个$http,和项目其他成员协作的时候就必须注明你注册的变量名称,而使用vue-axios大家就没有歧义了。

说白了,使用vue-axios更多是为了符合规范,并且方便协作吧。

这篇关于vue.js - axios 可以挂在Vue原型上 为啥还有个vue-axios?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆