将第三方插件放在 new Vue(){xxx}中和Vue.prototype.xxx=xxx的区别是什么?

Vue.use(ElementUI)

Vue.prototype.$axios = axios
Vue.config.productionTip = false

new Vue({
el: '#app',
router,
store,
//axios,
i18n,
template: '<App/>',
components: { App }
})

在组件中使用$axios正常,this.$axios.get(可以正常执行

但如果用下面这种方式就会提示TypeError: Cannot read property 'get' of undefined

Vue.use(ElementUI)

//Vue.prototype.$axios = axios
Vue.config.productionTip = false

new Vue({
el: '#app',
router,
store,
axios,
i18n,
template: '<App/>',
components: { App }
})

那么这两种到底有什么区别呢?从我自己了解到的内容,只知道在prototpye中使用的是实例中的属性,在vue(){}中的是全局属性,按照这种逻辑来说 我注册到new vue(){}中不应该有问题啊,可是为什么不行呢,

还有我理解Vue.use(ElementUI) 使用use方式的就是在使用标签库,我的理解对吗?

阅读 6.3k
4 个回答

区别是:

  • 不是为了vue写的插件(插件内要处理)不支持Vue.use()加载方式
  • 非vue官方库不支持new Vue()方式
  • 每一个vue组件都是Vue的实例,所以组件内this可以拿到Vue.prototype上添加的属性和方法。

new Vue(config)

这里传入Vue构造函数的config 是vue框架做处理的 你传入一些他没处理的字段自然无效....

建议看下js 高程 构造函数和原型!

应该用 Vue.use(axios)

你做项目直接在main.js配置一下 一个是全局注册 一个是局部注册 你这样注册无效

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题