前端比较特殊,给个我自己的经验。「业务属性」越重的代码越不考虑封装,「组件属性」越重的代码越得封装,「请求」相关的代码善用函数式编程,「样式文件」善用框架管理。
首先,不要折腾封装前端业务逻辑。前端业务逻辑容易变化。有些活动页、表单页可能一个月一个样,且绝不复用。这些页面的开发成本也低,从零到完成只需一两天。故,给灵活多变的业务逻辑进行抽象封装的 ROI 很低,不要浪费精力于此,最好基本的点即可:正确命名、代码嵌套不宜过深、写好注释。
其次,好好设计前端通用组件。哪类组件算是通用组件呢?需要保证用户交互连贯性的组件就是。比如,弹窗、浮层、抽屉、复杂表单、编辑器、筛选框、导航栏等。用户在和此类组件交互时是「经验」驱动的,有些肌肉记忆可能精确到宽度。对于此类组件,前端要抽象好,提供最小粒度的接口,避免有谁乱改或干脆自己再造了个行为不一致的轮子。
再者,http 请求相关的代码善用函数式编程。函数式编程思想对前端很重要。如何用闭包做防抖节流几乎是面试必考。除此之外,前端也可以善用柯里化的思想组装后端参数:用户一次表单填写对应一次 currying。再者,访问量大的前端应用需要做接口调用的埋点分析热点路径。而前端可以利用函数装饰器的思想实现以避免对相关方法的侵入。最后,建议前端用好 lodash 库。
最后,善用 CSS 框架来管理样式,如使用Tailwind CSS