JavaScript遭嫌弃,“反JS”主义者兴起

整理 | 章雨铭 责编 | 屠敏出品 | CSDN(ID:CSDNnews)

JavaScript是世界上最流行的编程语言之一,已有二十多年的历史,它也是Web开发人员常使用的三种主要语言之一。JavaScript可以用于各种各样的目的,从增强网站功能到运行游戏和基于Web的软件。

但是一种语言不可能做到完美,在过去的十年里,JavaScript驱动的网站方法(如:由JavaScript生成的HTML)常常被用在一些无益的情况下。把应用程序(例如:谷歌地图)和交互式文档(例如:Twitter)混为一谈的人数不胜数,创建了很多占内存、性能差又耗电的网站。另外,JS代码段相当大,且各浏览器厂商对JavaScript支持程度不同,在不同的设备上会以不同的方式呈现,从而导致展示效果不一致。

所以,很多人会产生一种“反JS”的情绪不足为奇。有些“反JS”激进者甚至希望使用一些不带JavaScript的网站。这种观点和“亲JS”一样,都低估了科技发展以及人的能动性的力量。

JavaScript是把双刃剑

Web发展已经有二十年的历史了,但是还是有很多人不会使用。数字鸿沟真实的存在,无论是在手机,还是在电脑上使用网站,仍然有很多人对于如何使用感到费解。如果真的在网站中禁用JavaScript,对于这些用户来说,使用体验只会更差。因为JavaScript还是有一些优点的,比如:

一个简单的基于JavaScript构建的购物车更容易使用,相比于每次按下添加商品按钮后自动重新定向到购物车页面,所需要的资源更少。

与注重体验的页面相比,输入数据时实时更新并实时通知所需支付费用的税收计算器,所产生的压力更小,效率更高,并且需要的来回次数更少。

一家保险公司提供由十几页组成的复杂订阅通道,看起来十分混乱且不易导航。可以用几个较小的表格代替,将这些表格相互堆叠,可以在一个页面中即时保存、编辑和缩小。

如果需要调整设置,阅读障碍者必须进入其配置面板,在表单中选择阅读障碍模式,然后对其进行验证,重新加载整个网站后可以使用新的样式。这个操作可以用一个简单的切换按钮实现,在任何界面都无需重新加载。

无论是绝对支持JavaScript还是反对JavaScript都不是一种好的解决方法。但是如果我们不强制在交互式文档中使用JavaScript,并且把它作为一种增强用户体验的工具就能很好的解决这两种极端情况带来的问题。

在用户体验和技术能力之间找到合适的平衡点的网站已经是一种常态。在我们有工具和知识可以做得更好的时候,绝对支持或反对JavaScript的看法是落后的。围绕着JavaScript使用的思维方式已经在行业中发生了转变,越来越多的人提倡更负责任的方法。

JavaScript 的使用在减少

大多数的前端框架现在都用于元框架(其中Next是领导者),提供服务器端的渲染与交互,从而在旧的硬件上工作。其中一些框架甚至不再是库,而是编译器(如Svelte),可以输出超级微小和高效的代码。

现在微框架已经兴起,它们的工作方式没有变化,但体积却小了10倍(Preact vs React),而且它们中的大多数甚至更快。还有另一些框架,它们可以编译成HTML并创建JavaScript交互的 "岛屿",结合了双方的优点(这就是Astro)。

所有这些之前提到的框架都严重依赖于一个庞大的工具生态系统,而这个生态系统仍然存在问题,不安全,脆弱(而且其中大部分现在被微软拥有)。但至少他们更加注重用户体验。对于那些不喜欢NPM但又想编译JavaScript的人来说,有一些单一的二进制文件,比如(Esbuild),可以直接安装在系统上,按照自己想要的方式使用。

最后,对于一些真的抗拒JavaScript的人来说,有一些库可以通过HTML属性(HTMX,Alpine)来管理Ajax调用或dom交互。这些库已经在“反JS”文化的团队中取得了很大的成功,比如Python、Ruby甚至JAVA。

但这依然不是万全之策。我们要消除Angular和React对网站造成的损害,同时保持它们的优势,仍然需要很多年的努力。但是,至少我们努力的方向是对的,也许很快我们就能够在2005年的电脑上拥有看起来和感觉上都不像2005年网页的网站。

你对此有什么看法呢?你是极端的支持或者反对JS者还是中立者呢?欢迎留言告诉我们。

参考资料:

https://thomasorus.com/about-the-no-js-mindset.html

https://www.cnblogs.com/SanMaoSpace/archive/2013/06/14/3136774.html

https://www.simcf.cc/9122.html

—END—

《新程序员001-004》全面上市,对话世界级大师,报道中国IT行业创新创造