每隔10年,JavaScript领域就会有一次更迭。我认为我们刚刚开始了一个加速变革的时期,未来可以被视为JavaScript的第三个时代。
JS的第一个时代,从1997年到2007年,以一声巨响开始,以一声呜咽结束。你们都知道Brendan Eich的故事,也许大家不太了解ES4是如何在来自Flash/ActionScript等封闭生态系统的激烈竞争中步履蹒跚的。
JS的第二个时代,从2009-2019年开始,从2009年的奇异之年开始,NPM、Node.js和ES6就是在那里诞生的。道格·克罗克福德(Doug Crockford)向我们展示了它的优点,用户构建了一整套JS构建工具和库,并将JS&39;的触角伸向了台式机和新款奇特的智能手机。到了2019年,我们甚至看到JS在Facebook的Hermes等手机上以及Svelte 3等编译器第一前端框架上出现了专门的运行时。JS的完整起源故事更好地由其主要作者布兰登·艾奇(Brendan Eich)和艾伦·沃夫斯-布罗克(Allen Wirfs-Brock)在“JavaScript:前20年”(JavaScript:The Firfs 20年)一书中讲述。
2020年感觉就像是一个新时代的开始。如果说第一个时代是关于构建一种语言,第二个时代是关于用户探索和扩展语言,那么第三个时代是关于清除遗留的假设和折叠工具层。
被清除的主要遗留假设是JS生态系统对CommonJS的依赖,这是一系列妥协的结果。它的替代者ES Modules已经等待了一段时间,但缺乏真正实现飞跃的动力,因为现有的工具速度很慢,但足够好。在前端,现代浏览器也配备了少量处理这些内容的功能,但是重要的细节还没有解决。Pika/Snowpack项目的定位是通过提供一个可以随着ES模块的制定而消失的门面来加速这一未来。
各层也在以有趣的方式坍塌。Deno采取了一种激进的方法,编写了一个全新的运行时,将一系列执行测试、格式化、linting和捆绑等任务的常用工具压缩到一个二进制文件中,说出打字脚本,甚至包括一个标准库。罗马采取了不同的策略,折叠了Node.js上的所有这些层(据我所知,我离它不太近)。
即使在前端框架中,正在进行的活动也是令人着迷的。Svelte将从动画到状态管理的一切都压缩到编译器中。Reaction正在探索metaframeworks和客户端-服务器集成。Vue正在开发一个名为Vite的unbundler开发服务器项目。
所有这些工作的结果既是更好的开发体验(更快的构建),也是更好的用户体验(更小的捆绑包,更快的功能交付)。
2030年JavaScript第三时代的终结会是什么样子?让我知道你的猜测,👇