🤔 为什么面向对象在 Web 前端开发中不占主导地位?

218 阅读3分钟

大家好,我是麦当。

现在前端开发页面,都是用 React 或者 Vue 这种框架,这些都属于 MVVM 模式的框架,强调数据驱动视图。在这种模式下,数据是应用程序的核心,用户界面则是根据数据的变化而动态生成的。

平时大家开发页面,感觉用个数组渲染一个列表,页面一下就出来了,也就是 map 一下的事情,和面向对象似乎没什么关系,就单纯的函数调用而已。同时,像 React 这样的框架,也在倡导函数式编程,似乎 FP 在前端开发中才是主导地位。

那么,2024 年前端还需要面向对象吗?本文,我们就来聊聊这个问题。

要解答这个问题,我们可以先看看,前端应用大部分是什么样的产品形态。

我列举了下常见的,大部分都是这几种

  • 表单、表单、还是表单,后台管理基本上都这样
  • 图文信息流
  • 视频网站

当然,还有很多复杂的页面,但是这些在前端里依然是少数,我们只看最常见的。

在上面👆的例子中,你会发现一个特点,就是页面布局都是固定的,每个位置该出现什么元素一上来就定好。以前端 er 熟悉的掘金为例:

内容主要有:

  • 顶部栏
  • 左侧、右侧导航栏
  • 中间的文章列表

是不是和上面的结论很像,布局里的元素是决定好的,在这种情况下,工作流程就是:

  1. 调用服务端 API,获取数据
  2. 用一个 map 把 list 渲染成对应的 JSX,如果不是个 list,就直接渲染这个组件

这也是前端被许多人调侃的,就是展示后端的数据就完事儿了,俗称网络刷漆工人。那么有没有不是这样的页面呢?

有,我们再来看看前端页面中,哪些应用必须用 OOP 来实现。

常见的有

  • 2D、3D图形编辑器如思维导图、流程图(飞书文档内的)、2D 设计工具(Figma)、视频编辑器(剪映)、地图软件(Google Map)
  • 文本编辑器:Word、Notion
  • 办公三件套:PPT、Word、Excel

这类应用都有一个共同点:在既定的视图里,可以组合出近乎无限效果,也就是说,没有一个明确的规则要求,某个 X 区域必须是 Y 元素。比如 PPT,一个画布里面可以放文本、图片、视频、SVG、图表、甚至嵌一个 Excel,这个画布可以有无数种组合。

等等,这不就和我们真是的世界一样么?我在一张桌上可以摆各种东西,没有任何规则要求我要放啥。而面向对象,就是对现实世界的抽象。

那常见的网页需要用到面向对象嘛?不需要。因为绝大部分情况,页面的布局,元素都是固定死的,就像常见的后台管理系统,基本上就是左侧是 Menu,顶部是 Filter,中间是 Table。Table 内的每个Cell 也是固定的。这种情况下,使用 React 直接一个 map 渲染出列表就完事儿了,根本不需要考虑太多东西,用其他编程范式开发,反而降低了开发效率。

结论

所以,面向对象无法在 Web 开发中占据主导地位,主要是产品形态决定的,绝大部分页面就是以信息展示为主,哪怕是稍微复杂点的 ERP,元素位置、内容也都是固定的,所以既然能用方便、快捷、直观的,就不需要用抽象的、复杂的方式去开发。