阅读视图

发现新文章,点击刷新页面。

我为什么说全栈正在杀死前端?

大家好,我又来了🤣。

打开2025年的招聘软件,十个资深前端岗位,有八个在JD(职位描述)里写着:“有Node.js/Serverless/全栈经验者优先”。

50fb0729f6733fc5092ecfc91f063c6.jpg

全栈 👉 成了我们前端工程师内卷的一种方式。仿佛你一个干前端的,要是不懂点BFF、不会配Nginx、不聊聊K8s,你都不好意思跟人说你是资深。

我们都在拼命地,去学Nest.js、学数据库、学运维。我们看起来,变得越来越全能了。

但今天,我想泼一盆冷水🤔:

全栈正在杀死前端。


全栈到底是什么

我们先要搞清楚,现在公司老板们想要的全栈,到底是什么?

image.png

他们想要的,不是一个T型人才(在一个领域是专家,同时懂其他领域)。

他们想要的是:一个能干两个人(前端+后端)的活,但只需要付1.5个人的工资。

但一个人的精力,毕竟是有限的。

  • 当我花了3个月,去死磕K8s的部署和Nest.js的依赖注入时,我必然没有时间,去研究新出炉的INP性能指标该如何优化。
  • 当我花了半周时间,去设计数据库表结构和BFF接口时,我必然没有精力,去打磨那个React组件的可访问性,无障碍(a11y)和动画细节。

我们引以为傲的前端精神,正在被全栈的广度要求,稀释得一干二净。

全栈的趋势,正在逼迫我们,从一个能拿90分的前端专家,变成一个前后端都是及格的功能实现者。


关于前端体验

做全栈的后果,最终由谁来买单?

是用户。

我们来看看全栈前端主导下,最容易出现的受灾现场:

1.能用就行的交互

全栈思维,是功能驱动的。

数据能从数据库里查出来,通过API发到前端,再用v-for渲染出来,好了,这个功能完成了😁。

至于:

  • 列表的虚拟滚动做了吗?
  • 图片的懒加载做了吗?
  • 按钮的loadingdisabled状态,在API请求时加了吗?
  • 页面切换的骨架屏做了吗?
  • 弱网环境下的超时和重试逻辑写了吗?
  • UI测试呢?

抱歉,没时间。我还要去写BFF层的单元测试。

2.无障碍,可访问性(a11y)

你猜一个全栈,在用 <div> 还是 <button> 来实现一个按钮时,会思考 aria-* 属性吗?他会关心Tab键的焦点顺序吗?

根本不会。

因为可访问性这个东西,是纯粹的纯前端范围,它不属于全栈能力范围。

3. 性能优化

当一个全栈工程师的注意力,被数据库索引、Nginx缓存、Docker镜像大小给占满时,他还有多少脑容量,去关心LCP、CLS、Tree Shaking、Code Splitting?

useMemoPureComponent?能跑就行了,别搞那么复杂。

前端,正在从用户体验的第一负责人,被降维成了全栈流程的最后一个环节——那个把数据显示出来UI就行。


一个前端的专业性

最让我发慌的,是一种风气的转变。

五年前,我们团队,会为一个如何把白屏时间再减少100ms的议题,在白板前吵一个下午。我们会为该用padding还是margin来实现间距 这种像素级的细节,在CR(Code Review)里吵架。

现在呢?

CR时,大家都在聊:你这个BFF的Controller层,不该写业务逻辑、你这个数据库类型定义不规范。

没人再关心那个前端按钮逻辑了。

全栈,正在杀死前端的专业性。它让前端这个职业,变得不再纯粹,不再专注一个领域。


我不想做全栈开发😠

聊了这么多,我不是在贩卖焦虑,也不是在抵制学习后端知识。

作为8年老前端,我现在给自己的定位是:一个T型前端工程师。

我必须是团队里,对浏览器渲染原理、JS性能优化、CSS布局、组件化架构、可访问性理解最深的那个人。这是我的前端身份,是我的技能。

我懂Node.js,是为了能和后端吵架时,提出更合理的BFF接口设计。

我懂Docker,是为了能理解我的代码,是如何在CI/CD上闪退的。

我懂SQL,是为了能理解为什么我的一个查询,会导致查询慢。


请大家别再神话全栈了😒。

Suggestion.gif

全栈的尽头,很可能是全废了,这个也不精,那个也不精。

我宁愿要做一个95分的前端专家,和一个95分的后端专家,让他们强强联手;

也不想要两个及格的全栈工程师,最终交付一个50分的、能跑就行的垃圾代码💩。

欢呼大家,尊重前端这个职业的专业性。

谢谢🙌

❌