2024年为什么前端开发这么复杂?


jQuery 和 Knockout 诞生于网站作为内容消费空间的时代。阅读一篇博文、观看一段视频、发表一条评论。网络应用程序及其状态大多由后端框架管理,只是将新的视图发送到前端。

当时,交互性正在增长,但通常只是页面上的一小部分,因此使用脚本来修改主要由后台系统生成的 HTML 和 CSS 是合理的。

但如今前端开发要解决的问题却完全不同。用于生成视图和管理更复杂网络应用程序状态的后端开始转移到前端。最终,SPA 应运而生,在 SPA 中,服务器基本上是向浏览器发送一个空的 HTML 文件和一个 JS 包,然后让浏览器构建所有的用户界面、管理状态,并使用 REST 与已降级为无头 API 的后端保持状态同步。

要解决的问题大大增加了,因此实现它的技术也变得更加复杂。您仍然可以使用简单的 CSS 组件库和基本的 JS 来显示基本内容。如今,随着现代 JS 语言的不断改进,浏览器之间基本兼容,而且大多数浏览器的更新都非常一致,再加上 CSS 的边框半径、框下阴影、flexbox 和网格,你已经不再需要这些库了。

  • 如果你只是在 2024 年做一个博客,那么现在是做一个超轻量级 vanilla 网站的最佳时机。
  • 如果你想制作一个复杂的网络Web应用,那么你就需要一个复杂的框架。

==================================================================
我对前端开发为何变得如此复杂的思考:企业业务开发人员被迫编写整个堆栈的代码。

管理者认为,"全栈 "团队比专门的专业团队更高效、更有利可图。一旦这种情况发生,所有的 "企业 "业务开发人员都必须学习并理解 HTML 和 CSS。

现代前端框架的复杂性充满了企业 Java 的味道。

感觉大多数前端框架试图解决的问题是,后端开发人员不喜欢使用 HTML 或 CSS,而 Java 企业的解决方案当然是:抽象所有的东西抽象所有的东西!

==================================================================
JQuery 基本上是一种操作 HTML 的简单方法。但我们的目标并不是HTML操作,那只是达到目的的手段而已。

前端的目标是将应用程序数据可视化,并让用户与之交互。这些框架是帮助开发人员实现这一目标所急需的抽象层。

如果没有框架,每个开发人员都必须解决每次状态改变时自动更新 HTML 的问题。每一次你都需要想办法以可扩展的方式重用组件。在这方面,JQuery 或 KnockoutJs 完全帮不上忙。

如果你很难理解这些框架的实用性,那么我想知道你是否开发过具有令人愉悦的用户体验的现代网络应用程序。

===================================================================
前端技术一直在试图解决一个特定的问题:网络是无状态的,但有状态的应用程序可以提供更好的体验并且速度更快(并且用户已经习惯了手机上的应用程序)。所有这些框架都试图解决一个在浏览器中可以更好解决的问题。
至于依赖关系,这可能是一场噩梦。一个废弃的项目和您的整个构建链都需要重新调整。不要介意需要不同版本的依赖项..

===================================================================

  • HTML 一直没有得到所需的更新,所以 JS 弥补其中一部分。
  • 后来 JS 变得过于复杂,Angular 就来弥补解决其状态问题。
  • 然后 React 出现,解决了 Angular 在状态方面带来的问题(大概是不喜欢 MVC?)

所有的 js 框架都是如此。

现在,你在客户端有一个前端和伪后台,而实际的后台或只是一个 API 管理器坐在那里,SEO 下降了,状态管理变得比 angular 和 react "修复 "的还要糟糕。

然后,next.js 出现了,它说:"嘿,让我们不在客户端上做程序,而是在服务器上做!这会解决我们所有的状态管理问题!(还有前面提到的搜索引擎优化问题)"。

说得好像这是个多么伟大的新想法似的,但这就是互联网的前身,当时它还只是CSS、HTML、jQuery/Ajax(我不是在为jQuery辩护,我认为那才是混乱的开端)。它没有搜索引擎优化问题,也没有缓慢的页面加载时间。

这些白痴把自己全盘否定了。