组合式API与函数式编程
函数式编程在前端的适用性分析
1. 函数式编程的核心
- 组合纯函数 通过小的纯函数组合构建复杂逻辑
- 剥离副作用 将副作用外置或延迟执行,保持组合性
2. 函数式编程的价值评估
函数式编程的价值与业务中纯函数占比成正比:
- 纯函数占比高 → 函数式编程价值高
- 纯函数占比低 → 函数式编程性价比不高
3. 前端开发的现实情况
前端开发中常见的操作
- 状态管理 副作用为主
- 请求接口 副作用为主
- 操作DOM 副作用为主
- 纯数据计算 占比较少
4. 结论
前端多数业务以副作用操作为主,纯函数占比低,因此函数式编程在前端的性价比不高。
组合式API的优势
- 提供了响应式的状态管理
- 通过hooks模式实现逻辑复用
- 在副作用密集的前端场景中更实用
组合式API与函数式编程的关系
相同的目标不同的实现:
1. 相似之处(目标层面)
- 都强调模块化和可组合性
- 都倾向于小而专的功能单元
- 都具备功能单元的可预测性
- 都关注关注点分离
2. 区别之处(实现层面)
- 组合方式不同
- 函数式:数学意义的函数组合(f(g(h(x))))
- 组合式API:逻辑模块的拼装组合
- 可预测性不同
- 函数式:引用透明,无副作用的数学可预测性
- 组合式API:包含副作用,状态行为的可预测性
- 副作用处理
- 函数式:副作用外置或延迟执行
- 组合式API:副作用内置,通过响应式系统管理
总结
- 组合式API更准确地说是模块化编程在响应式系统中的实现,与函数式编程目标相同:都是为了模块化组合。
- 组合式API更能适应副作用密集的前端现实场景,实现层面提供了更务实的解决方案。