关于axios在vue-cli搭建的项目的使用。
为什么在项目里的main.js里引入了在axios,在其他 .vue页面里使用提示未定义?
为什么必须在 .vue的当前页面引入axios才能够使用?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
为什么在项目里的main.js里引入了在axios,在其他 .vue页面里使用提示未定义?
为什么必须在 .vue的当前页面引入axios才能够使用?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
因为每个vue组件有独立的作用域。要全局使用可以把axios挂载到Vue的原型上。然后在组件内通过this访问。
查了下相关资料,发现可以通过 Object.defineProperty 来解决。
然后在.vue页面中引用
其实你疑惑的是为什么要这么麻烦, 要么在main里面把axios放到vue的原型里用, 要么每个.vue 组件内 import.
为什么不跟以前写jquery一样, script引入就能在页面的任何一个地方用.
其实这就是一个模块化开发的理念. JS之间的互相依赖问题. 就好像你写 .vue 组件, 你必须在父组件内 import 然后注册到componets内才能用的道理是一样的.
以后别人维护你代码的时候就能一眼就能看到每个文件之间的依赖关系和路径, 不会出现出现一个BUG, 然后整个项目的找代码的情况.
有兴趣就去搜索一下模块化开发的相关知识吧.
因为他不是一个vue的component,所以不能在main.js注册了就能全局调用,不过有一个方法:
之后就可以在.vue文件通过调用
来获取axios实例
是的,没错的
其实有两种方案:
方案一:
就是大家上面说的
将axios模块绑定到全局的Vue原型上面。
方案二:
单独写一个utils工具类,
在这个工具类中
导入 axios模块和qs模块(为了axios 进行post请求时对参数进行格式化)
然后在这里
定义导出的方法,在组件中如果要使用的时候
直接import 进去就可以了