vue中关于api统一管理那点事
前情提要
正常写小项目的时候,关于请求接口的存放可能没有那么在意,毕竟纵观整个项目可能也就那么十几二十个接口,当出现问题进行定位的时候也能很轻松的定位到。
但是当接口的数量达到百级的时候,出现接口调整等的问题时就会出现捉襟见肘的情况,再多点可能改一个api接口就要找好久。而且有的接口可能好多地方用,如果这个接口发生更好,好家伙,光修改个接口地址或者参数什么的就得要一两个小时,太影响效率和开发心情。
此时将api模块解耦出来就显得尤为重要。现在收集到了api统一管理的几种方案,各有千秋,具体优劣还有待各位看官的探讨。
针对的是vue脚手架项目,不是在html中引入vue的项目。针对小项目而言(没有单独二次封装axios)无需管理,直接干。仅限于接口数量在20-30的
上代码: 复制代码统一api.js文件管理
将所有的api的接口信息都写在一个js文件里去维护。页面接口请求直接引入即可在根目录下创建api文件夹,然后创建index.jsexport default { getInfo: "https://xxx.x.com/getinfo" } 复制代码具体页面使用 复制代码针对非小型项目而言(进行axios的二次封装)
关于axios二次封装的问题可以直接点击链接查阅,有小白不懂得可以联系我。
对于接口数量超过50的来说,还是用上述的方式去请求接口,此时无论是对于维护还是升级而言都不是很友好,此时我们需要更便利的方案。api统一管理 + 挂载到vue实例上 + 单模块
思路:在api统一管理时,不仅仅管理请求地址,而是直接写一个request的请求方法,通过接受一些参数来实现多变性。api/index.jsimport request from "@/utils/axios" export default { getInfo(params) { return request({ url: "/xxx/xxx/xxx", method: "post/get", params, // 如果是get请求的话 data: params // 如果是post请求的话 }) } } 复制代码在main.js里import Vue from "vue" import App from "./App.vue" import api from "@/api/index"; Vue.prototype.$api = api; Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount("#app") 复制代码页面上得使用 复制代码api统一管理 + 挂载到vue实例上 + 多模块优点:可以在任意位置调用接口缺点:如果接口数量足够大,挂载到vue实例上得数据过多,可能会造成性能问题api/modules/account.jsimport account from "@/utils/axios" export default { getInfo(params) { return request({ url: "/xxx/xxx/xxx", method: "post/get", params, // 如果是get请求的话 data: params // 如果是post请求的话 }) } } 复制代码api/index.jsimport account from "./modules/account" export default { account } 复制代码在main.js里import Vue from "vue" import App from "./App.vue" import api from "@/api/index"; Vue.prototype.$api = api; Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount("#app") 复制代码页面上的使用 复制代码api统一管理 + vuex + 单模块
思路:api统一管理的方式不变,但是由挂载到vue实例上改成vuex 优点:在不挂载到vue实例的基础上可以在任何页面随意调用任何接口 缺点:为了保证在刷新页面不会报错的情况下就需要在api模块写一个接口配置,同时在store模块也需要写一次,比较繁琐。在api/index.js的写法不变。main.js中的相关挂载代码删除store/index.jsimport Vue from "vue"; import Vuex from "vuex"; import api from "@/api/index"; Vue.use(Vuex); export default new Vuex.Store({ action: { getInfo(store, params) { return api.getInfo(params) } } }) 复制代码在页面中 复制代码
当然你也可以使用mapActions 复制代码api统一管理 + vuex + 多模块
优点:可以在页面的任何位置进行调用 缺点:新增删除修改同一个接口,需要同时维护两个文件对于api文件而言,此时各个模式是相互独立的:api/account.jsimport request from "@/utils/axios" export default { getInfo(params) { return request({ url: "/xxx/xxx/xxx", method: "post/get", params, // 如果是get请求的话 data: params // 如果是post请求的话 }) } } 复制代码store/modules/account.jsimport api from "@/api/account"; export default { namespaced: true, actions: { getInfo(store, params) { return api.getInfo(params) } } } 复制代码store/index.jsimport Vue from "vue"; import Vuex from "vuex"; import account from "./modules/account"; Vue.use(Vuex); export default new Vuex.Store({ modules: { account } }) 复制代码在页面中 复制代码总结目前就这些方法,各有千秋。不知道各位还有没有更好的方法,在评论区打出来,将感激不尽...
作者:知你故来风
链接:https://juejin.cn/post/7084149728799096840
是什么面膜让前男友惊呼后悔?欸,仙女们,小编我前一阵结束了慢慢长跑之路,与枕边人说再见了。其实,在最初刚刚结束的时候,还没有很难受的感觉欸,会觉得不就是分个手嘛天下之大,还能没有更加适合的人吗?随着时间的推移
携手互联网时代的华为鸿蒙系统,北京汽车抢占市场先机早期的互联网汽车更多的通过植入芯片,来通过语音控制的方式操控一些车辆基本单位功能,比如说你可以通过唤醒智能助手之后对天窗空调导航等基本功能进行初级的操控。这是互联网汽车的雏形,即便
宝能城发稳步迈向产城发展快车道宝能滨江府引爆燕子矶宝能城发作为宝能集团综合开发业务的核心平台,承袭集团基因,不断构筑城市综合开发运营价值生态圈,赋能城市发展。伴随综合实力不断增强,宝能城发稳步迈向产城发展快车道,佳绩频出。近期,位
北京EU5PLUS亮相首届购车节,出色表现成为新能源标杆随着时代发展,汽车行业也在改革换代,现在消费者越来越注重性价比,而车企也在努力创造更符合消费者需求的汽车,其中在2021北京汽车首届购车节上,北京EU5PLUS震撼亮相,新车外观采
护肤你真的做完整了吗?提到护肤步骤的话,大家想到的是不是化妆水乳液眼霜精华还有面霜呢?在我们平时的视野中这些产品和步骤被我们称之为护肤步骤,其实我觉得是对了一半的,因为这确实可以作为夜间护肤流程来做的,
买灯饰送五菱宏光miniEV?月影家居联手张继科送豪礼如果你觉得今年618的活动力度好像不够,那是因为你还没有发现真正的宝藏店铺!虽然618打着购物狂欢节的名号,但是大家都知道各个品牌商店的套路,不是预付定金限时开抢,就是限xxx名付
互联网直播平台网红带货,真的能提升业绩?新社交电商平台的崛起,引起众多商家的注意。目前比较火的平台大致有,抖音快手雅虎YY斗鱼等等,起初这些平台是以好玩新鲜形式上线,经平台发展商业化越来越严重。不可否认这些平台给予许多人
如何通过社群裂变寻找精准客户的4大要点如今在这个时代做网络营销离不开社群营销,社群裂变容易,策划好裂变海报,几乎就不缺人,但是有个问题点就是客户的精准度,客户不精准,裂变没有任何意义。比方说你在鱼塘中打捞大的鱼去市场卖
社群运营干货,微信社群构建的13个建议是时候给大家展示社群的干货了,在运营社群中(以微信社群为主),偶尔都会遇到一些瓶颈,比如说,微信运营一个月时间还是挺不错的,但是后期发现这个社群就跟机器社群一样。当初策划运营的时都
哪些人更有潜力做社群?做社群有3个特点有个网友留言给我一个问题,问题是什么样的人比较容易做社群,或者说做社群有什么特点?其实小蚱蜢之前还没有总结过这个问题,今天就给大家总结一下这两个问题,社群划分的特点可以说是有三个。
构建高黏性和高参与度的社群7件事一个合格的社群离不开社群的黏性及参与度,如果这两件事没有做好,那么社群面临死群就不远了,为什么这样说呢?社群是人与人之间的聚结团体,在社群中不能全部都是吃瓜群众,要让每个群员都有参