“我经历了长达十年的‘洗脑’:现代 Web 开发,非 JavaScript 框架不可!”

c3de7908a8be1249c88f2a9408ee9ef2.gif

【CSDN 编者按】说起 Web 开发,总是很容易想起 JavaScript,很少有人质疑过它的性能和必要性,而本文作者则认为:“这是一种洗脑”。

原文链接:https://www.spicyweb.dev/the-great-gaslighting-of-the-js-age/

未经授权,禁止转载。

作者 | Jared White

译者 | 弯月   责编 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

最近,网上流传着一些讨论现代 Web 开发的文章,我看后很生气。

06db3521021e62242b0cd038c5a4a5dd.jpeg

8a1292eb5b45507884e316187c4b1e68.png

未来是 AngularJS 的天下?

我记得,作为一名专业 Web 开发人员,第一次感觉自己失去对现实的把握是在 2010 年代中期。多年来,我愉快地使用 Ruby on Rails 技术栈向客户交付了有价值的软件。Ruby 很酷,浏览器和开放网络标准终于变得越来越好了,响应式设计和渐进式增强等概念也流行起来了,网络开发变得越来越有趣了。

然而,突然之间,我听到许多有关 AngularJS 的传闻(初版 AngularJS,不是后来全部重写后的那版)。与我之前遇到的许多视图库(比如我个人最喜欢的 Knockout.js)不同,并不是说你在网页上加几行 AngularJS 代码,就可以获得一些新的交互能力。

人们说这是一个前端框架,是Web开发的未来。你可以用 AngularJS 构建整个应用程序,你可以将服务器的基础设施转变为 JSON API,甚至不再需要服务器渲染 HTML。在 JavaScript 完成渲染之前,你看到的页面整个空白,这不是错误,而是一个功能!

有人甚至告诉我,作为 Ruby on Rails web 开发人员,我的技术已无法在“现代”开发中立足。我必须加入 AngularJS 阵营,否则就会被时代淘汰。我记得,当时在从旧金山回湾区的路上,我与一位 Rails 开发人员进行了长时间的交谈,我们谈到了对于必须成为“AngularJS 开发人员”并放弃 Rails 的想法,我个人是非常抗拒的。

多年后,我才发现作为一名 Ruby on Rails 开发人员,我掌握的技术比在 2014 年转为全职 AngularJS 开发时更有价值。

11bd76816c5aa4d692274d6a00a2ff56.png

事实证明,未来不是 AngularJS 的天下

那么,如今掌握编写 React 应用程序的开发人员,会不会像 10 年前编写 AngularJS 应用程序的开发人员一样,在漫长的技术发展史中走入绝境呢?谁也说不好。

但我非常肯定,这完全有可能。

这就是为什么我非常反感下面这样的争论(注意,下面这些言论引自 Laurie Voss 的文章):

  • React 节省了开发人员的时间:随着时间的推移,React 之类的框架可以节省开发人员的时间,这一点毫无争议。

  • React 可以帮助你解决很多问题:网络效应是我们选择 React 的部分原因,无论这门技术的优点在哪里,目前这是许多基本应用程序的最佳选择,因为React 生态系统提供的已有解决方案和具有良好文档的样板文件可以帮助你完成80%的目标。

  • 你可以雇佣掌握 React 的人:React 开发人员更容易招聘,了解 React 的开发人员不需要太多入职培训,而且使用自己喜欢的框架可以让开发人员更快乐,所以 React 开发人员也不容易跳槽。

  • 开发人员的时间比一些客户更有价值:如果网站设计需要让每一个地方、每一台设备上的每一位客户都有完美的体验,那么开发人员就需要将全部时间都投入到优化工作上,永远没有时间发布任何新功能。

  • 现状是在开发人员和客户体验之间寻求平衡:我们观察到的现实是现代 Web 开发牺牲了用户的体验,我们的模型解释了为什么:X > Y,其中 X 是“成本” 开发时间”,Y 是“客户流失成本”。

  • 你做得很好:小伙伴们,不要觉得自己很愚蠢。不要被花言巧语所蒙蔽。你一直在为自己和用户的最大利益做出明智的决定,不需要因为使用流行的框架而内疚。这些框架之所以受欢迎,因为它们都很优秀。

请等一等,为何这些话听着如此耳熟?你知道我在哪里听过吗?没错,就是 10 年前兜售 AngularJS 的大佬们!

713604f1d21248844ac187969c220d9e.png

我很生气

我很生气,因为在过去十年中,Web 开发有许多像我一样的人都觉得我们反复成为煤气灯效应(一种心理操纵的形式,其方法是一个人或一个团体隐秘地让受害人逐渐开始怀疑自己,使其质疑自己的记忆力,感知力或判断力,其结果是导致受害者的认知失调和其他变化,例如低下的自我尊重)的受害者,而且这些人还拒绝承认已经造成的伤害。

前端 JavaScript 框架吞噬 Web 世界的时代,SPA(单页应用程序)等等,这些想法的出现并不是因为一些好心的开发人员发现了很棒的开发体验,全心全意地支持并推广了,而是因为我们被欺骗了。

有人大肆宣扬以 HTML 优先、SSR 优先、逐步增强的心态编写应用程序,使用我们喜欢的语言/技术,统统过时了,而且对用户很不利——然而,这不过是个谎言。

有人宣扬说,完全使用前端 JavaScript 编写应用程序会减轻我们的负担——这句话也是谎言。

注意,没有人会因为选择 React 而责备或辱骂开发人员。

有一个小而强大的“影响者”生态系统在网络上兜售一种“流行文化开发者抽象”的精神,无论是 React、CSS-in-JS、Tailwind CSS、“无服务器”还是“微服务”,都是他们为了制造煤气灯效应而编造的以假乱真的谎言。

说到底,这根本不是 React 与竞争对手的问题,甚至不是框架的问题,而是一个你是否信任开发者社区的问题,因为这些开发者社区经常被虚假和误导性信息给淹没。

达尔曼曾说:“信任需要数年时间才能建立,而打破只需要几秒钟,而且永远无法修复。”

f7162b8fb6de0c58ade5572abf142514.png

停止修正主义历史!

再说一次,本文没有针对任何人,但由于我需要反驳一些人的看法,所以不得不指出下面这条评论:

世上不存在由一群魅力四射的大人物组成、试图摧毁整个世界的秘密团体,也不是说这个世界没有这群人就会变得完美。我们不能因为事态的发展而责怪任何人,是我们共同创造了这个世界。

我们?我们是谁?下面的列表包含了几个主要的 Web 开发社区,多年来他们一直在努力对抗前端 JavaScript 带来的恐惧和疑惑,以及基于 NPM 的构建工具带来的冲击:

  • Ruby / Rails

  • Python / Django

  • Elixir / Phoenix

  • PHP / Laravel

  • SSG,比如Jekyll、Hugo、Eleventy以及最近的 Astro 等

我们并不是要求你一时头脑发热放弃自己最喜欢的前端库,成为一名 Rails 开发人员、Phoenix 开发人员或其他开发。我们只希望你们承认,多年来你们霸占并主导了 #WebDev 的话语权,忽视了我们反复尝试指出的 JS/SPA 方法的潜在缺陷和谬误,有时你们甚至嘲笑我们在技术栈/语言/等方面的选择。

上面的评论说道“世上不存在由一群魅力四射的大人物组成、试图摧毁整个世界的秘密团体”,我真的很想知道平日里你们都与哪些人交流,因为日常与我打交道最多的项目和客户都认为这个世上确实存在这样一群人。

我们认为,“Tech Twitter”以及其他地方的大人物一直在营造一种氛围:要么选择 React 要么失业。他们不仅因此赚了大钱,还获得了大量社交媒体关注。各个公司的高管纷纷加入了他们的行列,拼命蹭热度,因为他们认为这样很酷,而且能够快速招揽到技术人员。

这些做法当真可笑,风险投资商从许多以消费者为中心的失败应用程序转向开发人员工具,因为这其中有钱赚,兜售基于“管理复杂性”的解决方案,还说现代网络应用程序变得异常复杂。但事实完全不是这么回事!

所以,恕我无法赞同“我们自共同创造了这个世界”这样的说法。是你们——JS 框架的铁杆粉丝——有意创造了这个世界,并将我们这些对此持怀疑态度的人永远排挤在外,到头来还表现得宛如一切都是自然进化的结果。

c9ddc3d23792c4723f53c3700d132ee2.png

Web 过去是、现在是、永远是多语言的

Web 是多语言的。这意味着,构建网站的语言和工具可以由任何语言编写,可以在任何类型的服务器、任何类型的操作系统上运行,可以通过任何类型的硬件,在世界的任何角落运行——因为 Web 的构建基础是协议和标准。

没错,你需要了解 HTML 才能从事 Web 开发,但 HTML 可以由任何工具生成,可以由任何平台提供,而且任何应用程序都可以使用 HTTP。

如果想从视觉效果呈现 HTML,你需要了解 CSS,而 CSS 的构建、编写和提供非常灵活。说到底,HTML 和 CSS 只不过是某个地方的某些文件夹中的某些文本文件,你可以利用任何技术框架动态呈现。

请注意,以上我没有提到 JavaScript,因为构建网站其实并不需要了解任何关于 JavaScript 的知识!

构建简单网站不需要 JavaScript。JavaScript 只是一种“附加”技术,是与 HTML 和 CSS 并肩的 Web 前端第三大支柱。我们需要的是 HTML、CSS 和JavaScript,而不是 JavaScript,JavaScript 和 JavaScript。

如果想成为一名 Web 开发人员,基本上你只需要了解  PHP/Ruby/Java/C#/Python/Go/Rust 中任何你喜欢的语言,再加上 HTML 和 CSS 就齐活了。

如果服务器端也使用 JavaScript,也没问题。但是,如果你要求 JavaScript 作为唯一的服务器语言,搭建起一个框架/构建系统/托管基础设施/模块生态系统的庞然大物,使用的语言是 JavaScript + JavaScript + JavaScript + JavaScript(以及现在的TypeScript + TypeScript + TypeScript + TypeScript),不仅会给全球 Web 开发行业带来巨大的负担,还极端排除异己。

这种思想基本上就是在说每一位不了解或不想了解 JavaScript 的程序员都应被排除在现代 Web 开发之外!这也太荒谬了。不仅如此,这种思想还违背了网络作为开放技术平台的精神。

Web 浏览器本身就不接受这样的思想,HTTP 不支持,服务器也不支持。

8917e76d7b851a1d653fa3fe4e2c2f58.png

提供证据的责任应由这些前端框架的铁杆粉丝来承担,而非普通的Web 开发人员

提供证据的责任不应该落在优先考虑 HTML、多语言服务器、极简主义前端、独立友好的 Web 开发实践的支持者身上。为什么他们要证明其方法应被视为行业的默认方法,并成为常见规模的网站和应用程序的最佳推荐实践?举证的责任应该由优先考虑前端框架社区身上,他们应该证明自己的架构是合理的。

坦白来说,我们不再信任你们了!我们厌倦了你们长达十年的洗脑。

每当我看到 JS 框架的铁杆粉丝又在我耳边吹风“你应该使用 SSR 以获得更好的性能”时,我都会翻白眼,因为这样的话我们早在 2014 年就听过了。

每当我看到 JS 框架的铁杆粉丝又开始唠叨,利用“孤岛”来分离不同页面上的库和代码包时,我都会翻白眼,因为在页面正常显示之前设法避免加载或执行巨大的 JavaScript 包,这是 2014 年炒作的话题了!

每当我看到 JS 框架的铁杆粉丝又开始抱怨:“约定优于配置”、“快速加载时间”以及“服务器直接访问数据库”以及所有热门的开发者经验时,我依然会翻白眼,因为 2014 年的非 JavaScript 全栈框架中早就有了这些功能!

我与 Ruby 社区中的很多人交谈过,前端世界中越来越多的人开始尝试使用“普通”的技术,回想这些年来 Web 开发一直在大量重新发明轮子,我们都会摇头感到沮丧。“JavaScript 疲劳”不仅仅是一小群技术宅男中流行的表情符,这是一个实实在在的问题!

所以,每当听到下面这样的言论:

“全球有数以千万计的软件开发人员,他们的工作都相对独立,而且他们会以不同的优先级、资源和权衡谋求最佳利益。结果造就了我们眼前的世界,尽管这不是一个完美的世界,但因为种种理性原因,最终达成了某种平衡。”

对不起,我认为这纯粹是胡说八道。我根本不相信这个世界存在,我认为的世界是这样的:

  • 一群自以为是的 JS 框架铁杆粉(尤其是 React)认为“每个人”都在使用 React,而且大多数人都喜欢这个框架,所以能有什么问题?!

  • 与此同时,大多数从事各种其他技术栈、语言和应用程序的人则认为“React 正在吞噬世界”之类的运动很疯狂,而且不利于 Web 的发展。我与多位初级开发人员交谈过,他们觉得在学习 React 的时候感觉自己像个白痴,与其他更靠近底层硬件的 Web 开发形式相比,React 不仅令人倍感困惑,而且毫无意义,而他们还会因为不理解 React 而遭到批评。许多“后端”开发人员讨厌前端开发,但我发现他们不一定讨厌前端开发本身,而是讨厌所有荒谬的复杂性。总的来说,这些复杂性是不必要的,只是因为 JS 框架的铁杆粉在背后推波助澜。 

还有如下 Voss 的这句话:

我绝对不会说大量使用 JavaScript 的单页应用程序对性能有好处,因为它们确实对性能没好处。这些应用程序的加载速度很慢,渲染速度也很慢,而且还占用了很多资源,通常比普通的 HTML 和 CSS 更脆弱。我认为 JS 框架的开发人员普遍能够接受这些限制,这就是为什么服务器端渲染是现代框架的重要特性的部分原因。大多数 React 支持者会告诉你,并非每个网站都需要是 React 应用程序。我认为开发人员并不愚蠢,所以他们知道在选择 React 时需要做出这些权衡。

什么?!我认为大多数 React 开发人员没有做出任何权衡。我认为大多数 React 开发人员都没有评估这个框架!他们之使用 React 是因为有人告诉他们必须使用 React,所以他们使用了 React。

如果真的是开发人员都花了数小时、数天、数周甚至数月的时间来评估各种前端框架以及构建 Web 应用程序的其他方法( Ruby on Rails、Elixir Phoenix等),最后得出一个结论,从各种需求和用例以及个人喜好的角度出发,他们认为React 绝对是最佳工具……

太可笑了,我真的很难相信有人能够做出这样严肃的声明!

我眼中的 Web 世界完全不同。我认为,Web 开发的世界充斥着质量低劣的内容,很大一部分都是错误的,还有一群有影响力的大人物、教育工作者以及企业中坚力量,他们不遗余力地向每个人灌输某种特殊的技术,或许他们知道这种技术本身就有问题,或者他们并不知道,但无所谓,最终结果都是一样的。

我不相信很多使用 React 的团队真的是因为出于技术的考虑,而有意选择了这个框架,也不相信选择这种技术能够帮助他们更好地构建系统,还说这种技术有广泛的研究、测试以及事实的支持。

说到底,这不过是拼人气,简单明了。而人气随时可能发生变化:10 年前,人气之王是 AngularJS,而如今是 React。明天还不知道是谁呢,因为这是不可避免的。

不过真正的问题不在于 React,也不在于某个人——问题是这个行业充斥着错误的思想,人们错误地认为:

  • 流行技术之所以流行是因为技术本身很好;

  • 即便到了 2023 年,Web 平台仍然很匮乏,因此高度抽象的前端框架仍然是提高程序员幸福指数的必要条件。

这两种假设不仅大错特错,还非常危险,因为这样的思想正在引导成千上万的年轻开发人员走上错误的道路。他们没有选择学习软件开发的基础知识:网络、HTTP、多语言 Web 服务器、HTML(包括自定义元素)、CSS(包括自定义属性),以及 JavaScript,而是努力学习 React/TypeScript。

我相信,到了 2033 年,作为一名 Ruby Web 开发人员,我掌握的技术远比学习 React 获得的任何技术更有价值。

到时候,我肯定活得好好的,但那些只知道 React 代码的新手程序员呢?也许他们的工作岗位早就消失了。

 

1dcff02fb4e92391fb8c0eab04ab9b1f.gif

☞微软 Office 全家桶被 GPT-4 革新:Word 一键变成 PPT,打工人的春天来了!
☞文心一言 vs ChatGPT!相同 10 问,结果出乎意料
☞OpenAI 总裁:GPT-4 有不完美,高阶版本正在测试!

dfd7d0b9755448c3185088f5e50428d2.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/66063.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语音笔记APP哪个好 用它直接录音并整理很方便

很多人在记笔记的时候,喜欢用录音来辅助以便提高效率,尤其是当领导临时布置了一个比较复杂的任务或者听到了一段包含重要信息的话,你又来不及打字,那么就可以采取录音的方法,能够在一定程度上避免遗漏某些重要内容。录…

当ChatGPT应用在汽车行业,具体有哪些场景?

​ ChatGPT有潜力彻底改变汽车行业并将其提升到新的高度。在ChatGPT的加持下,该行业的多个领域都将取得重大变化。 利用ChatGPT作更高级的虚拟助理 你可能用过现有的虚拟助理,它们一系列的回复有时候让人不得不感叹一句“人工智障”!然而&a…

chatgpt赋能python:Python如何办公自动化

Python如何办公自动化 近年来,Python的应用越来越广泛,不仅在数据分析和机器学习领域得到了广泛的应用,还在办公自动化方面也越来越得到人们的关注。Python语言强大的数据处理能力、API调用能力和自动化能力,为我们提供了一种有效…

chatgpt赋能python:Python怎么办公自动化?

Python怎么办公自动化? 在现代社会,信息技术已经为我们带来了诸多便利。在工作和生活中,我们不仅需要处理许多数据,还需要按照一定流程进行操作。这样的任务可能非常琐碎而重复,让人感到疲惫。而采用Python进行自动化…

智能排班系统 【开源说明】

文章目录 引言说明讲讲开源开源要做什么了解开源协议项目的信息脱敏写好项目说明文档修改.gitignore 项目不完善点说明管理系统前端页面自适应做得不好部分页面体验不好 管理系统后端接口缺乏数据校验数据管理接口查询不够完善接口可以更加完善 开源仓库地址智能排班系统相关文…

借力表单设计器开源,助力实现办公自动化发展!

数字化转型是当今的发展潮流,有越来越多的企业对于数据管理和办公自动化发展深有体会,也习惯于采用低代码开发平台来实现更高效率的办公。在传统表单失去发展优势的当下,借力表单设计器开源工具,可以给企业带来提质增效的办公效率…

chatgpt赋能python:如何利用Python进行自动化办公

如何利用Python进行自动化办公 在现代办公环境中,自动化成为了一种趋势。利用计算机程序自动处理重复性劳动,可以提高生产效率和工作质量,同时也能够让工作更加轻松。Python作为一种常用的编程语言,在自动化办公中发挥了重要作用…

如何实现办公自动化?

办公自动化(OA)允许数据在没有人工干预的情况下流动。由于人工操作被排除在外,所以没有人为错误的风险。如今,办公自动化已经发展成无数的自动化和电子工具,改变了人们的工作方式。 办公自动化的好处 企业或多或少依…

Paper Reading:《Zeno:An Interactive Framework for Behavioral Evaluation of Machine Learning》

一枚科研小白的论文的阅读笔记,主要是为了记录自己的学习过程,前期读论文很多时候还是停留在解决语言障碍的阶段… 这篇文章也是极其粗浅的阅读 文章目录 一.论文简介二.常识、语料、术语积累1.术语2.生词3.表达积累 三.工作流总结 一.论文简介 论文放出…

最新RLHF拯救语言模型「胡说八道」!微调效果比ChatGPT更好,两名华人共同一作...

西风 发自 凹非寺量子位 | 公众号 QbitAI RLHF(基于人类反馈的强化学习)的一大缺点,终于被解决了! 没错,虽然RLHF是大语言模型“核心技巧”之一,然而这种方法也存在一个问题—— 它只会判断生成文本的整体效…

幼儿-综合素质【2】

1.材料分析题:材料:一天早上,陈一航蹦蹦跳跳地走进教室,在搬椅子时,他发现旁边小朋友的椅子上有一本书没有收好,便大声喊道:“余老师,这儿有一本书没有收。”余老师笑看说&#xff1…

教师资格考试--中学综合素质

综合素质 教育观 素质教育的基本内涵★★ 素质教育以提高国民素质为根本宗旨素质教育是面向全体学生的教育素质教育是促进学生全面发展的教育素质教育是促进学生个性发展的教育素质教育是以培养学生的创新精神个时间能力为重点的教育 记忆口诀:提素个性创两全 …

中学-综合素质【3】

1.量子概念的提出,第一次把能量的不连续性引入对自然过程的深入认识,对其后量子理论的进一步发展起到了重要作用。这一概念的提出者是(). A.普朗克 B.洛伦兹 C.爱因斯坦 D.麦克斯韦 2.公元395年,罗马帝国分裂为东、西…

幼儿-综合素质【1】

1.某幼儿园一直试着让幼儿做一些力所能及的事,如发勺子、分碗、搬凳子等。一天,小樱用乞求的目光注视着老师,轻声说:“老师,让我发一次勺子好吗?”老师说:“每次吃饭最慢,上课从不举…

中学-综合素质【1】

1.彤彤性格内向,基本不跟其他同学交往,课间常一个人在座位上看书。罗老师对她说:“你看同学们玩得多开心啊,你应该参加一些课外活动,多跟大家一起玩。下列说法中不恰当的是(). A.罗老师注重学生个性发展 B…

中学-综合素质【2】

1.量子概念的提出,第一次把能量的不连续性引入对自然过程的深入认识,对其后量子理论的进一步发展起到了重要作用。这一概念的提出者是(). A.普朗克 B.洛伦兹 C.爱因斯坦 D.麦克斯韦 2.公元395年,罗马帝国分裂为东、西…

数据流程图 状态图 流程图

数据流程图 状态图 流程图 数据流程图 数据流程图(DFD)提供了通过系统的数据流的图形表示。它逻辑上显示了我们的系统进程和外部接口或数据存储交换了哪些信息,但是它没有明确显示信息交换的时间或顺序。数据流程图是结构化系统分析和设计方…

业务逻辑流程图

用Axure注释逻辑 元件的逻辑有5种,具体如下: 功能逻辑:详细讲解该功能的逻辑。 交互逻辑:对页面之间的相互跳转进行说明。 视觉逻辑:对颜色,对图标的要求。 业务逻辑:讲一下该功能对应着什么业…

系统流程图,程序流程图和数据流图

系统流程图(System Flowchart):是描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况和系统的操作控…

StringBuilder做字符串拼接高效的原因

StringBuilder做字符串拼接高效的原因 1.与String相比 通过分析源码,发现两者底层都是用一个数组来存储字符 public final class String implements java.io.Serializable,Comparable<String>,CharSequence{/** The value is used for character storage */private fi…