Re: [讨论] 现在公司写前端都会用到flux吗

楼主: nosecoolie (諾苦力)   2018-09-03 16:00:13
我们就来模拟一下一个电商网站如果用 global.js
这样的方式去处理 state 可能会发生什么事情
一开始,你的 global.js 可能会只有一点点资料,
只有一些 configuration 之类的资料,于是他可能只是一个单纯的 object
页面内所需的资料就用单纯的 setState 方式去处理,
随着时间过去,网站越来越大,功能越来越复杂,
你发现从父 componet 用 props 传递 state 的方式渐渐行不通,也让你快起笑了
像是会员的资料,购物车的内容,订单的状况等等的,
于是你决定将这些资料提升到 global.js 的层级
一开始,你只是单纯的对 global.js 做变更
(ex: global.member = { id: 1, name: nose })
一开始你觉得一切都很美好,直到有一天你在修 bug 的时候发现
有个工程师为了快速解票,在需要更改 state 的地方都直接虾七八乱改一通
明明 global 里面有许多重要的资料,但他却天真的写了
global = { member: { id: 1, name: nose } }
global 只剩下 member 的资料了,其他重要的资料都给毁了,
于是你决定重新 refactor
把 global.js 改写成 singleton 的 class,
并写了 setter 或是对应的 function 来修改 global 里的 state
更严格的要求团队的成员必须透过这些 function 来修改 state
现在感觉一切更美好了一点
不过随着时间再次的过去,你发现 global.js 变得越来越肥大
好几千行的 js 让你难以维护,
于是你决定再次的 refactor,
将 global.js 里同类型的 state 拆分出 member, product, shoppingCart 等等的子 js
于是你感觉一次又再次的美好了,
也发现这东西长得越来越像 flux 惹
大 guy 4 酱的感觉吧
Redux 的确是会增加一些复杂度,写起 code 来可能会让你觉得麻烦又绑手绑脚的
但当你仔细回头来看时,或许你也会发现这些麻烦的东西其实是在帮你自己的忙
就像是明明是弱型别的 js , 为何有许多人想硬把他搞成强型别
写起来更加的麻烦,甚至还要编译
不过说到底还是要看团队的组成以及专案的性质
来决定要怎么样 maintain 前端 SPA 的 state
然后因为你文章有提到 Container 的部分就特别再多说一下,
拆分出 Presentation component 其实差别蛮大的,
因为如果你的 component 要是牵扯到太多逻辑,做了太多 side effect 的事情
你的 component 就越难 reuse
想当年自己写 Alt 瞎七八乱写,想 reuse 个小小的 component 都搞得自己头很大
估时间时信誓旦旦的跟 PM 说这个就搬前面的东西过来用就好,
结果最后还是决定重写一个比较快 XDD
作者: OhGNM (OhGNM)   2018-09-03 16:48:00
解释的很生动XD
作者: akito117 (宗益)   2018-09-03 16:59:00
很有画面 推XDDD
作者: MoMoShota (正太控)   2018-09-03 17:13:00
你是不是干过一样的事 XD
作者: wanlinlin (wanlinlin)   2018-09-03 17:47:00
作者: MOONY135 (谈无欲)   2018-09-03 17:48:00
94你
作者: stkoso (Asperger)   2018-09-03 17:51:00
true story
作者: ripple0129 (perry tsai)   2018-09-03 18:33:00
果然目前处理的前端专案还太小了,只觉得麻烦
作者: justben (BEN)   2018-09-03 19:19:00
5F got you
作者: keyut2433 (keyut2433)   2018-09-03 23:06:00
很真实xd
楼主: nosecoolie (諾苦力)   2018-09-04 00:27:00
我其实没实际经历过, 但我看过类似的 code base XD
作者: hangigi (韩仔)   2018-09-04 07:35:00
真实XD 路走一走就会发现大家能想出的解法都大同小异
作者: IamTD (TD)   2018-09-04 09:52:00
就是这样阿
作者: pim44442000 (频死两千)   2018-09-04 20:39:00
朝圣鼻子
作者: oopsmarcia (marcia)   2018-09-04 20:58:00
推推原po好帅<3
作者: emily800326 (emilybear)   2018-09-04 21:45:00
朝圣 推
作者: TristaW (Trista)   2018-09-04 21:53:00
第一推就给泥了 鼻子哥
作者: VisualStudio (2015)   2018-09-04 23:23:00
作者: bluelink (淡水小面仔)   2018-09-05 01:24:00
朝圣 鼻子哥加油!!
作者: rice9547 (一碗饭)   2018-09-05 02:42:00
可不可以不要那么写实XDD
作者: bndan (seed)   2018-09-07 11:51:00
虽然不是用这系的 但下半文有遇过..感同身受 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com