Vue 所有请求都应该放在 Vuex 里面吗?

2021-08-25 10:30:22 +08:00
 sxox
最近在定一些代码开发规范,有一个前端同学坚持要把所有请求按模块都放到 Vuex 里面?请问合理吗?
9012 次点击
所在节点    Vue.js
90 条回复
duan602728596
2021-08-25 10:32:52 +08:00
不合理
murmur
2021-08-25 10:34:01 +08:00
放哪里都一样,只要维护方便就行
musi
2021-08-25 10:36:27 +08:00
vuex 不是用来管理状态的么,难不成你们所有的请求都是状态?
请求分模块能理解,全放到 vuex 里就不能理解了
Twinkle
2021-08-25 10:38:19 +08:00
大部分放 vuex 里面感觉没啥问题,还要看你们的页面数据是不是都从 vuex 里拿。单独提出一个 service 或者 api 的文件夹放下面也可以,都是便于维护的方式。
timethinker
2021-08-25 10:39:01 +08:00
就是把数据源进行封装,有一定的好处,方便测试,就看这样做值还是不值,如果变化非常频繁就比较费事。
SxqSachin
2021-08-25 10:39:31 +08:00
我们公司是把所有接口放到 api 文件夹中,再按不同功能模块继续细分文件夹。把所有请求放到 vuex 里是头一回听说
murmur
2021-08-25 10:40:17 +08:00
@musi vuex 两层封装简单理解点就是一层修改 state,一层可以是异步操作,修改一堆 state,当然也可以无聊封装直接调 commit
从这个角度来看,远程请求是 promise,会修改一些 state,这个封装是没问题的
iikebug
2021-08-25 10:40:34 +08:00
头一回听说还能这么用的
ccyu220
2021-08-25 10:42:27 +08:00
我个人认为只有涉及到基础信息或者全局公共的请求才放到 vuex 里面。

比如:session 、login 、logout 以及页面上报、记录信息等。

适时而定,一条路走死那叫极端。
murmur
2021-08-25 10:44:05 +08:00
@SxqSachin 这当然可以,但是换个角度想,你 api 里就写一个 axios({url: xxxx, params: xxxx}),和把这玩意直接塞 action 里,差别不大,为了三五行代码封装一个函数,说多余也多余
Vegetable
2021-08-25 10:46:21 +08:00
统一管理是对的,但是 vuex 显然不是最好的选择。
keepeye
2021-08-25 10:47:23 +08:00
vuex 是管理全局状态的,反对将所有状态一股脑塞进去,更不用说将所有接口都塞进去了
learnshare
2021-08-25 10:49:07 +08:00
见过这么做的,能运行
但完全不可以,绝对不可以

状态管理是用来存储、修改、共享和分发数据的,不应该包含任何副作用、异步过程和其他多余操作

目前见过的一些状态管理使用状况,基本都是乱用,什么都放到状态管理中
实际上应该谨慎使用状态管理,尽量少用或不用,真需要状态管理的数据和场景并不多
qiaobeier
2021-08-25 10:51:46 +08:00
小项目随意,稍大点项目不推荐。
Shook
2021-08-25 10:51:49 +08:00
不应该。而且我本身比较讨厌 Vuex,所以 Vue3 以后,我认为 Vuex 都可以不用了。
murmur
2021-08-25 10:52:04 +08:00
@learnshare "不应该包含任何副作用、异步过程和其他多余操作"

action 本身就可以返回异步,为啥不能包含异步过程

我举个例子,https://github.com/PanJiaChen/vue-element-admin/blob/master/src/store/modules/user.js

action 里的 login,login({ username: username.trim(), password: password }),把这行直接改成
axios({url: "login.xxx", params:{xxxx}})没任何问题,一个函数多了 3 行而已,考虑到拆分后 module 也不大,不会对代码整洁度和管理造成多少影响
Kusoku
2021-08-25 10:52:48 +08:00
请求数据不是跟状态强关联的,放在 vuex 里属实有点欠妥,两个各自独立的东西只是在部分场景有耦合,强行放在一起有什么收益呢?如果涉及到状态管理方案的改造变更或者压根就不需要状态管理呢?
sxox
2021-08-25 10:54:04 +08:00
@Kusoku 美其名曰是为了 api 的复用,我实在是理解不了
sxox
2021-08-25 10:54:21 +08:00
@duan602728596
@murmur

你们是怎么做的
murmur
2021-08-25 10:55:00 +08:00
@sxox 我们的项目小,api 这层封装都没有,action 也不用,就只用 state 和 commit

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX