整理 | 章雨铭 责编 | 屠敏
出品 | 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

JavaScript遭嫌弃,“反JS”主义者兴起相关推荐

  1. JavaScript奇技淫巧:加密JS代码反调试

    JavaScript奇技淫巧:加密JS代码反调试 JS代码混淆加密,已被很多人使用,因为它真的很有用.很实用,可以用于保护代码.防护分析.复制.盗用,还可以用于小游戏过审.APP加固等方面. 混淆加密 ...

  2. 反种族主义者是错误的共同种族差异问题

    The COVID-19 pandemic, which was supposed to be a "Great Equalizer," has turned out to be ...

  3. javaScript 压缩混淆反混淆

    javaScript 压缩混淆反混淆 压缩混淆的意义 1. 压缩 2. 混淆 如何压缩混淆 案例 Unicode转义序列(Unicode Escape Sequence) 压缩代码(Compact c ...

  4. html动态加载js方法,如何通过JavaScript动态加载js

    在Web开发时,有可能会遇到这么一种情况:我们需要通过一个js文件中引用另一个js文件中的函数,可是另一个函数有没有办法在页面中通过该 方法比较简单,具体实例详见代码: 文件1:demo.js fun ...

  5. 如何通过JavaScript动态加载js

    在Web开发时,有可能会遇到这么一种情况:我们需要通过一个js文件中引用另一个js文件中的函数,可是另一个函数有没有办法在页面中通过该<script>标签加载.于是,我们有了通过js动态加 ...

  6. JavaScript动态加载js文件

    /********************************************************************** JavaScript动态加载js文件* 说明:* 之前没 ...

  7. 小汤学编程之JavaScript学习day01——认识JS、JS基础语法

    一.认识JS 1.JavaScript的组成     2.浏览器执行js简介     3.JavaScript是什么?     4.扩展内容 二.JS基础语法 1.代码书写位置     2.变量    ...

  8. html js轮播图无白链接,JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)...

    简介这篇文章主要介绍了JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)以及相关的经验技巧,文章约11114字,浏览量505,点赞数3,值得参考! *{ margin:0; pa ...

  9. 自学JavaScript第四天- JS 进阶:AJAX Promise Canvas

    自学JavaScript第四天- JS 进阶:AJAX Promise Canvas AJAX 使用 XMLHttpRequest 使用 fetch() 方法 处理 AJAX 数据 安全限制 跨域方案 ...

最新文章

  1. Win64 驱动内核编程-19.HOOK-SSDT
  2. dw_mysql】apache_怎么将dreamweaver与apache服务器连接
  3. XAMPP的安装与使用
  4. bat小游戏代码大全_Python打砖块小游戏源代码
  5. 技术创业需胆识 谈IT技术人员的创业 (http://www.cnblogs.com/dudu/archive/2007/05/27/761740.html)...
  6. Servlet的学习(四)
  7. Linux环境下压缩与解压命令大全
  8. 从壹开始 [Admin] 之五 ║ 实现『按钮』级别权限配置
  9. 深入了解Zookeeper核心原理
  10. RabbitMQ主题模式(Topic)
  11. 3-36Pytorch与tensorboardX
  12. SpringMVC中@Controller和@RequestMapping
  13. 【读书笔记】 —— 公平与正义
  14. Yii2 使用 .env 来配置项目环境变量
  15. 2022 XbotPark(冬季)科创训练营重庆明月湖站总结
  16. django+layui表格数据管理
  17. 放弃国企工作、花2万参加培训班,只为挤进互联网大厂
  18. 使用Kuboard spray部署Kubernetes 1.24.3 集成Harbor私有镜像库
  19. Linux C/C++程序员 但行好事 莫问前程 Linux系统下 解决Qt5无法连接MySQL数据库的方法
  20. web渗透--ftp暴力破解,明文、嗅探安全等

热门文章

  1. Altium AD20电源分割的方法,AD内电层的电源分割,AD电源层电源分割
  2. 求数据流中的第K大元素
  3. 【100题】第三十六 比赛淘汰问题(谷歌笔试)
  4. PhantomJS命令行选项
  5. 如何用Baas快速在腾讯云上开发小程序-系列3 :实现腾讯云COS API调用
  6. Github官方app分析——用户身份验证模块
  7. 【转载】SQL SERVER 游标
  8. Asciidoc语法
  9. leetcode 559 N叉树的最大深度
  10. 本地使用TensorBoard