我们可以手动将axios库挂载到我们vue框架中,其中的实现原理与Vue.use又有相似的部分。
在Vue中使用axios
有Vue-axios插件,这里建议使用直接的axios库。
作为一个优秀的 HTTP 库,axios 打败了曾经由 Vue 官方团队维护的
vue-resource,获得了 尤大的大力推荐,成为了 Vue 项目中 HTTP 库的最佳选择。
我们为了方便的在vue框架的项目中使用axios快速编写请求代码,我们从设计上将axios注册进我们的vue项目中。
注册并不等于引用,这里的注册具体是将axios库加入到我们vue的原型中,这样我们整个项目,所有组件都能直接调用axios进行代码编写。
npm axios from 'axios'
- 完成axios的下载后引入并注册:
//main.js
import axios from 'axios'
Vue.prototype.$axios = axios;
new Vue({
store,
router,
render: h => h(App)
}).$mount('#app')
- 然后我们在使用时:
//可以根据axios的语法进行拓展书写代码。
this.$axios('http://localhost:8080/js/1.js')
除了该方法,还有其他更加规范的结合axios的方法。
除了通常的插件我们手动全局注册,官方还提供了Vue.use帮助我们对全家桶插件完成便捷的全局注册。
Vue.use
通过上面的内容,我们发现注册一个模块或则插件时,我们直接在main.js中引入该插件然后注入原型中。而Vue.use其实做的内容也是相似的。
通过Vue.use我们可以方便的使用路由和状态管理器:
this.$router
this.$store
Vue.use其中是调用了router或Vuex中的入口文件导出的对象中的install方法,install方法通常完成注册插件的操作。例如在全局下Vue.$router = router;。
差异
你会发现在main.js中:
new Vue({
store,
router,
render: h => h(App)
}).$mount('#app')
我们向Vue构造函数中传入router和Vuex,和Vue.use都是不可或缺的内容,但是作用却不一样。
-
向Vue构造函数中传入router和Vuex,是为了router和Vuex插件能够运行在Vue实例和子组件中,实现路由功能,实现状态响应式等功能。 -
而
Vue.use并不是负责插件本身功能生效,只是完成全局注册的功能,为了通过this.$xxx的方式全局调用相关的方法和属性。