2022 年已经到来,我们是时候反思 Web 开发中的种种过时软件、炒作歪曲和荒谬趋势了。把握这一年,我们也该重新专注于性能与技术运用,把手段和目的重新统一起来。当然,我不是劝大家用汇编或者 C 语言搞 Web 开发,但关于 JavaScript、Ruby on Rails、Python、Django 以及 PHP 框架的疯狂观点也该消停一下了。”
有些朋友天真地把 Mozilla 火狐看作挑战 Chrome 霸权的救世主与替代品。没错,火狐当初确实把我们从微软 IE 的魔爪下拯救了出来。但如今的 Mozilla 管理能力极为低下。2018 年,Mozilla 从各大搜索引擎厂商处获得了 4.357 亿美元收入,这笔钱主要用于在世界各地的火狐浏览器上强推默认搜索引擎选项。花钱的主要是谷歌,此外还有 Yandex 和百度。虽然形势还行,但 Mozilla 在 2022 年还是裁判了全球约四分之一(250 人)的员工,理由是新冠疫情造成的经济动荡“严重影响了公司收入”。但事实真是这样吗?胡扯,2018 年 Mozilla 掌门人拿到了 240 万美元,而且薪酬在过去五年中翻了一番还多。
Mozilla 再也不是那个厚道可靠的老伙计了,要想继续生存下去,他们必须得来一轮高管大换血、叫停那些没人想要的产品,重新回归以捐赠为基础、以客户需求为依托的发展道路上来。当然,以上都是闲话,只为引出第一个真正重要的问题。
我们为什么需要这些浏览器供应商?如果没有他们,不就没有这么多屁事了?我认为问题出在所谓“现代 Web 开发人员”身上,他们才是罪魁祸首!
正是这帮所谓的“现代 Web 开发人员”一直在用臃肿且毫无必要的 JavaScript 搭建网站,不断在并不适合的平台上进行 Web 开发。这相当于逼着用户使用大厂出品的浏览器,否则就没法正常访问互联网内容。
如果没有所谓的“现代 Web 开发”,我们根本不需要这些体量如同怪兽般庞大的浏览器。我们只需要简单的轻量化浏览器就能访问网站上的所有功能,且只有少数非常专业的网站才需要特殊解决方案。而即便如此,其中大部分特殊网站也完全不必依赖于大型浏览器。
Web 开发需要一场革新
我知道,有些 Web 开发者并不了解这些更靠谱的开发方式,但这不该成为理由。对于任何一位软件开发者来说,大家都应该在所用知识之外多学习、多接触新知识。我们需要了解什么时候适合用这款工具、什么时候适合另一款。我觉得是时候来一场 Web 开发大革命了,即除非绝对必要、否则尽量不在网站上使用 JavaScript。
别在网站上使用 Google Analytics、Facebook 链接和其他社交媒体垃圾!我们得学着摆脱这些固有元素。另外,你真的需要什么统计数据吗?如果是,难道服务器端收集到的统计数据还不够?真正需要的信息大部分都可以由服务器端直接收集,对吧?另外,如果选择跨服务器运行,日志还会被自动发送至日志服务器。所以别再靠什么 Google Analytics 了,毕竟这东西既没必要、立场也很值得怀疑——没准谷歌一直在骗你。
不要使用不适合 Web 开发的编程语言。Python 和 Ruby 就是两种绝不该出现在 Web 上的语言。总之,编程语言必须针对性能进行优化,甚至可以考虑在具有严苛性能要求的具体任务中使用 C。由此带来的巨量性能提升可能对应着超出大家想象的成本节约。
所谓“现代Web开发”,都是些什么妖魔鬼怪?
2022 年已经到来,我们是时候反思 Web 开发中的种种过时软件、炒作歪曲和荒谬趋势了。把握这一年,我们也该重新专注于性能与技术运用,把手段和目的重新统一起来。当然,我不是劝大家用汇编或者 C 语言搞 Web 开发,但关于 JavaScript、Ruby on Rails、Python、Django 以及 PHP 框架的疯狂观点也该消停一下了。”
这是一篇充满愤怒的博客。作者是一位出生于 70 年代的“技术愤青”unixsheikh,他用“激进”的方式抛出了一个观点:“Web 开发人员应该花费更多时间来进行优化”。
很显然,把问题归咎于 Web 开发有些偏颇,但他的观点也的确喊出了一些人的心声。文章发出后,有支持者给他发邮件说:“关于文中的问题,我也一直在跟自己的老师和伙伴们争辩。我用过一个项目工具,里面包含 1786 个包、存在 69 项漏洞——45 个中风险、20 个高风险、4 个严重风险。其‘重达’432 MB,而且内部如同一团乱麻。更可笑的是,用它甚至不足以输出‘hello world’,因为还另外需要单独的路由包和状态管理包。这一切太疯狂了,但每个人都在这条路上狂奔,还美其名曰‘现代方法’。”
还有些网友在 Hacker News 上评论说,“它包含了一些让人无法接受的真话”。同时也有反对者说,“很多人都认为 Web 开发是一件微不足道的事情,不需要前端工程师,他们的存在只是为了增加 JavaScript 的复杂性,网站的 100% 功能都可以使用纯 HTML + HTTP 表单处理。但现实情况 (IMO) 是:浏览器是‘新操作系统’。对于大多数消费者和商业软件,在浏览器中运行是显而易见的选择。不管你喜欢它还是讨厌它,这就是当前的实现方法。”
不同的人总会带来不同的看法,有争论不一定是坏事情,我们将 unixsheikh 的这篇文章翻译出来,希望能为读者带来一些思考。以下是他的分享内容:
不是浏览器的错
谷歌 Chrome 正在主导当下的全球网络浏览器市场,新的问题也由此而来——作为一家实际意义上的广告商,谷歌正在不断推进极具欺骗性与威胁性的 Manifest V3 计划。
有些朋友天真地把 Mozilla 火狐看作挑战 Chrome 霸权的救世主与替代品。没错,火狐当初确实把我们从微软 IE 的魔爪下拯救了出来。但如今的 Mozilla 管理能力极为低下。2018 年,Mozilla 从各大搜索引擎厂商处获得了 4.357 亿美元收入,这笔钱主要用于在世界各地的火狐浏览器上强推默认搜索引擎选项。花钱的主要是谷歌,此外还有 Yandex 和百度。虽然形势还行,但 Mozilla 在 2022 年还是裁判了全球约四分之一(250 人)的员工,理由是新冠疫情造成的经济动荡“严重影响了公司收入”。但事实真是这样吗?胡扯,2018 年 Mozilla 掌门人拿到了 240 万美元,而且薪酬在过去五年中翻了一番还多。
Mozilla 再也不是那个厚道可靠的老伙计了,要想继续生存下去,他们必须得来一轮高管大换血、叫停那些没人想要的产品,重新回归以捐赠为基础、以客户需求为依托的发展道路上来。当然,以上都是闲话,只为引出第一个真正重要的问题。
我们为什么需要这些浏览器供应商?如果没有他们,不就没有这么多屁事了?我认为问题出在所谓“现代 Web 开发人员”身上,他们才是罪魁祸首!
正是这帮所谓的“现代 Web 开发人员”一直在用臃肿且毫无必要的 JavaScript 搭建网站,不断在并不适合的平台上进行 Web 开发。这相当于逼着用户使用大厂出品的浏览器,否则就没法正常访问互联网内容。
如果没有所谓的“现代 Web 开发”,我们根本不需要这些体量如同怪兽般庞大的浏览器。我们只需要简单的轻量化浏览器就能访问网站上的所有功能,且只有少数非常专业的网站才需要特殊解决方案。而即便如此,其中大部分特殊网站也完全不必依赖于大型浏览器。
Web 开发需要一场革新
我知道,有些 Web 开发者并不了解这些更靠谱的开发方式,但这不该成为理由。对于任何一位软件开发者来说,大家都应该在所用知识之外多学习、多接触新知识。我们需要了解什么时候适合用这款工具、什么时候适合另一款。我觉得是时候来一场 Web 开发大革命了,即除非绝对必要、否则尽量不在网站上使用 JavaScript。
在我看来,这应该是互联网网站未来发展的必要条件。特别是在“Web 3.0”概念正如火如荼的当下,我认为去 JS 化应该成为除去中心化之外最重要的探索目标。
之所以提出这样一个战斗目标,不只是因为我们对少数浏览器开发商的过度依赖引发了大量现实问题,更是因为整个过程正在白白浪费能源。臃肿的网站让每位访问者的电费飙升,从服务器端和客户端两方面带来了双输结果。
由于浏览器中 JavaScript 代码过多(看起来所谓的「现代 Web 开发者」根本不懂怎么在不用 JS 的情况下开发前端),所以用户即使是打开最简单的网页也会增加设备功耗。另外,由于采用不适合的服务器端框架(例如 Rails 和 Django),服务器的功耗也存在浪费。另外提醒大家,虽然互联网上运行的大部分网站由 PHP 编写,但其成本同样不低。PHP 本身自 v7 版本以来已经解决了内部与外部的一系列重大性能问题,也让功耗变得相当友好;但“现代 Web 开发者”们仍在使用 Larave、Symfony、Codelgniter 或者 Yii 等低效框架,这些框架的存在让 PHP 的改进变得毫无意义。
事实上,目前流行的所有框架都糟糕透顶。它们的开发大多基于抽象理论与设计模式,包含不少跟现实应用完全无关的噪声元素。更重要的是,我呼吁大家直接放弃这些框架——因为性能优化离不开原始代码。我们应该远离混乱,而不是添加更多混乱变量。如果某款软件输出个“Hello world”都需要 75 个类或者模块时,它是绝对没有任何性能优化可言的。回归简单、小型和高度优化过的专用库,告别框架,好吗?
过去我们讨论 Unix 的时候,常常会想“还有哪些可以丢弃?为什么会存在这个选项?”这是因为基础设计总会包含缺陷,完美的设计点是个永远无法达成的目标。所以与其匆忙添加选项,不如想想哪些选项是真正的“不能没有”。― Doug McIlroy就 Rails 和 Django 而言,项目组明显不理解上面的观点。Ruby 和 Python 就不该被用于 Web 开发,因为它们太慢了、根本不适合。大家甚至可以用 Bash 创建并运行网站,行是都行、只是不明智。
有些人认为开发者的时间比计算资源更宝贵,而 Rails 和 Django 的目标就是帮助人们快速完成工作。但这也正是问题所在:如今整个互联网面临的过度臃肿问题,就是由这些不负责任且短视的观点所引发。快就一定对吗?显然不是。
作为个人建议,如果您正是一位“现代 Web 开发者”,强烈推荐您使用 Go 语言进行 Web 开发,但前端不要使用 JavaScript。最重要的是,尝试在不用 Go 标准库的情况下进行 Web 开发。这不仅是一段学习经历,也会给您带来宝贵的提升和启发。
给 Web 开发者的建议
如果您身为 Web 开发者,希望能认真考虑以下几点:
可能很多朋友觉得这篇文章一点新潮的内容没有,发在 2001 年还差不多。我也希望是这样,但很遗憾,这里的很多内容直到十年后的今天还需要拿出来讨论。如今越来越多的 Web 开发者已经意识到多年来市场上宣扬的“现代 Web 开发”理念是错的。资源有限,我们不该在服务器端和客户端上疯狂挥霍。