写点什么

前端开发的“内卷”终结者:扔掉复杂的 JavaScript 框架,用 PHP 与 jQuery 构建应用

  • 2024-10-16
    北京
  • 本文字数:2785 字

    阅读完需:约 9 分钟

大小:1.32M时长:07:41
前端开发的“内卷”终结者:扔掉复杂的 JavaScript 框架,用PHP 与 jQuery构建应用

导读:在现代互联网时代,随着技术的迅猛发展,JavaScript 框架已成为 Web 开发领域的主流。然而,越来越多的开发者开始质疑这些框架的必要性,认为它们带来了不必要的复杂性和性能问题。本文深入探讨了这种复杂性的反作用力,从初创企业到公共服务网站,探究了为何“保持简单”正在重新获得青睐。通过多个开发者的声音,我们揭示了 JavaScript 框架对项目的潜在影响,以及如何通过渐进增强和避开过度依赖框架,构建更高效、更可靠的 Web 应用。无论你是开发者、技术管理者,还是对互联网技术感兴趣的读者,这篇文章都将为你带来新的思考角度,揭示一个或许即将到来的技术潮流转变。

 

反抗 JavaScript 框架的潮流正愈演愈烈。在 Lex Fridman 的近期访谈中,AI 应用领域的开发者 Pieter Levels 分享了他的独特开发哲学:他仅依赖基础的 HTML、PHP、少量 jQuery 增强的 JavaScript 以及 SQLite 数据库,坚决不采用复杂的 JavaScript 框架、现代编程语言或 Wasm 技术。

 

Levels 坦言:“我观察到 PHP 正在复兴。人们似乎对层出不穷的框架感到了厌倦。JavaScript 框架虽功能强大,却常显笨重,维护成本高昂,每次新版本发布都可能带来大规模的代码重构需求。相比之下,PHP 以其稳定性和可靠性著称,仍能胜任各种工作场景。”

 

在他的个人简介中,Levels 自豪地列出了自己参与创立的七个创业项目,并在其网站上积极倡导:“快速迭代,频繁发布产品。” 这充分彰显了他作为实践者的本色,倾向于高效快捷的开发路径,因此选择绕开那些复杂的 Web 框架。

 

众多知名开发者纷纷在社交媒体上附和了 Levels 的观点。

 

“那些鼓吹复杂性的推销员会让你深信,如今你已无法单凭一己之力完成任何事情,”Ruby on Rails 的缔造者 David Heinemeier Hansson(DHH)在其推文中写道。“他们会告诉你,你无法处理身份验证、无法实现扩展、无法运行数据库,甚至无法让计算机连上互联网。他们想让你觉得自己束手无策,只能依赖购买他们的产品。别上当,勇敢拒绝这种套路。”

 

更有甚者,一些开发者对自己曾经转向 JavaScript 的决定表示了深深的懊悔。

 

“2010 年,将我的主站从 PHP 迁移到其他平台,是我职业生涯中最糟糕的决定之一,” 网页开发培训界的领军人物、Frontend Masters 公司的创始人兼 CEO Marc Grabanski 在推文中坦言。“那时,我的原生 PHP 网站每月吸引超过一百万独立访客,但那次迁移到更新语言和框架的尝试却让网站彻底失去了原有的势头,最终导致了它的没落。” 在随后的详细解释中,他进一步澄清,自己的观点并非针对 PHP 本身。“我的意思是,如果你的项目能够凭借简洁的代码顺利运行,那就不要盲目追求潮流而进行过度设计。保持简单,并全力以赴地维持项目的良好发展势头。”

 

“简约至上” 的理念,在计算机科学的殿堂里早已根深蒂固。回溯至 1998 年,史蒂夫·乔布斯(Steve Jobs)在一次访谈中深刻阐述道:

 

“化繁为简,往往比构建复杂系统更为艰巨:它要求你倾注大量心力去梳理思绪,直至达到化境。但这份努力绝非徒劳,因为一旦实现,你将拥有移山倒海般的力量,轻松驾驭复杂。”

 

复杂度的另一端

有趣的是,这股简约之风不仅在由 Pieter Levels 引领的 “奋斗不息” 创业浪潮中重新焕发生机,还悄然渗透至专业的 Web 开发领域,成为一股不可忽视的力量。

 

在开发者群体中,很难找到像 Pieter Levels 与 Alex Russell 这样背景迥异的两位人物了。Levels 是 PHP 领域的积极倡导者与成功创业者,而 Russell 则身为微软浏览器工程师,同时也在 Web 开发界享有极高的声望,是引领潮流的关键人物之一。尽管两人在技术理念上大相径庭,但令人瞩目的是,他们如今都不约而同地对复杂的 Web 框架持批评态度。

 

在近期的一系列博客文章中,Russell 发起了一项个人研究,深入探讨了 “JavaScript 主导的前端文化如何对美国的公共服务体系造成不利影响”。他以 BenefitsCal 为例,详尽剖析了公共服务网站中 JavaScript 过度使用的弊端。

 

BenefitsCal,作为加利福尼亚州新近推出的在线服务平台,旨在为寻求 SNAP 福利(即食品券)援助的家庭提供便捷服务。然而,通过运用 WebPageTest.org 及 Google Core Web Vitals 等权威网页性能评估工具,Russell 揭示了该网站存在的一个严峻问题:JavaScript 文件体积庞大,严重拖慢了网站的加载速度。

 

他指出:“首要问题在于,BenefitsCal 网站依赖于总计达 25MB(未压缩状态,实际传输时压缩至 17.4MB)的 JavaScript 代码,且这些代码在展示任何实质性内容之前便需完全加载。即便在最佳网络环境下,这样的加载速度对多数用户而言也是难以接受的。对于那些网络条件不及 P75 基线模拟标准的用户而言,他们将面临更为漫长的等待。更为严重的是,如此庞大的脚本量还显著增加了在低性能设备上浏览器标签页崩溃的风险。”

 

系列文章的第四篇章中,Russell 针对上述问题提出了一系列应对策略。他特别推荐我们研读英国政府制定的 “渐进增强” 标准,该标准被收录在 gov.uk 网站的 “服务手册” 之中,作为一项重要的指导性内容。Russell 所引用的链接页面开篇即明确定义道:

 

“渐进增强,是一种精心规划的网站及应用程序构建策略。其核心思想在于,我们应从确保网页仅凭 HTML 就能实现基本功能为起点,随后再循序渐进地融入层叠样式表(CSS)及 JavaScript 等技术元素,以逐步提升用户体验。”

 

摒弃 JavaScript 框架的浪潮

 

在 Web 开发的广阔天地中,利用 PHP 与 jQuery 迅速搭建起一个简易的 Web 应用,与坚守渐进增强原则、致力于打造符合 Web 标准的应用,两者之间的鸿沟显而易见。前者倾向于迅速推出 “最简可行产品”(MVP),往往优先满足配备高端设备如 iPhone 用户的体验;而后者,则深谋远虑,旨在为未来的扩展奠定坚实基础,同时确保应用能够惠及最广泛的用户群体,包括那些并不使用 iPhone 的用户。

 

然而,在追求这些目标的过程中,JavaScript 框架却意外地成为了绊脚石。Pieter Levels 在开发众多应用时,明智地选择了绕开这些复杂的框架;而 Alex Russell,则更是不遗余力地推动公共服务网站采纳 更为优化 的开发实践。

 

这股反对过度依赖复杂 Web 框架的潮流,或许正预示着一种更加理性、务实的开发理念正在兴起。

 

作者简介:

 

理查德·麦克马纳斯(Richard MacManus),作为《The New Stack》的资深编辑,深耕于 Web 及应用开发趋势的报道领域。早在 2003 年,他便创立了 ReadWriteWeb,并将其发展成为享誉全球的科技新闻巨头,深刻影响了行业内外。从博客、社交媒体到 Ajax 等革命性互联网工具的萌芽初现,再到现今风靡的 AI、元宇宙及 JavaScript 框架等前沿技术,麦克马纳斯凭借敏锐的洞察力与深刻的解析力,多年来始终屹立于技术趋势预测与解读的前沿,被誉为该领域的领航者。

 

原文网址:

 

https://thenewstack.io/developers-rail-against-javascript-merchants-of-complexity/

 

声明:本文为 InfoQ 翻译整理,未经许可禁止转载。

2024-10-16 16:3110298

评论

发布
暂无评论
发现更多内容

网安超基础一周目

吉师职业混子

9月月更

Qt|制作简单的不规则窗体

中国好公民st

qt 事件 9月月更

设计模式和七大设计原则不难的

知识浅谈

设计模式 设计原则 9月月更

这样Debug,排查问题效率大大提升...

程序知音

架构师成长之路——什么是架构师

小小怪下士

Java 程序员 架构 后端

前端面试哪些是必须要掌握的

loveX001

JavaScript 前端

英特尔Wi-Fi 7速率提升5倍,为多应用场景带来改变

科技之家

基于微信小程序的会议室预定平台开发笔记

CC同学

Lua脚本在Redis事务中的应用实践

京东科技开发者

数据库 redis 事务 开发语言 Lua脚本

Java基础科普

吉师职业混子

9月月更

【数据结构】利用Python手把手带你自定义矩阵

迷彩

数据结构 矩阵 矩阵运算 9月月更 自定义矩阵

【网络安全】记一次简单渗透测试实战

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞利用

经久不衰的设计定律是不要让我思考的设计

宇宙之一粟

读书笔记 设计 设计思维 设计原则 9月月更

35岁程序员自荐:我所掌握的架构技术

小小怪下士

Java 程序员 中年危机

长安链ca 容器部署(解决无法访问Mysql问题)

长安链

汽车总线系统

不脱发的程序猿

汽车电子 CAN总线 汽车总线系统

netty原理分析

小小怪下士

Java 编程 程序员 后端 Netty

成为优秀程序员的8种方法

小小怪下士

Java 程序员 职业发展

【存疑】爬虫学习中decode问题

Sher10ck

存疑

开发者有话说|谈谈自己大学期间的收获,以及毕业的求职经历

芯动大师

个人成长 成长路上的思考 初心不变

Vue3-无限滚动的懒加载-本地数据操作版

Sam9029

Vue 前端 懒加载 9月月更

Docker镜像列表中的none:none是什么

程序员欣宸

Docker 9月月更

PipyJS - 函数式网络编程语言

Flomesh

Service Mesh 服务网格

从0开始的计算机之路

吉师职业混子

9月月更

Vue3-无限滚动的懒加载-模拟网络请求Mock版

Sam9029

Vue 前端 9月月更 无限滚动

数字化办公,企业OA软件技术该如何发力?

FinClip

为什么Java中有三种基础的类加载器?

小小怪下士

Java 编程 程序员 程序

追光动画《杨戬》:水墨、石窟、洛神赋,中式美感背后有中国云计算

B Impact

大数据调度平台Airflow(六):Airflow Operators及案例

Lansonli

airflow 9月月更

Java | extends关键字【面向对象的第二大特征——继承】

Fire_Shield

Java 9月月更 extends

Java 面试之技术框架

小小怪下士

Java spring 编程 程序员

前端开发的“内卷”终结者:扔掉复杂的 JavaScript 框架,用PHP 与 jQuery构建应用_架构/框架_Richard MacManus_InfoQ精选文章