【译】Javascript 的第三个时代

Javascript 的第三个时代

原文链接:The Third Age of JavaScript

Javascript 的方方面面正在不停地改变,10 年后的 JS 可能跟现在完全不同。

Javascript 每隔10年就会发生颠覆性的变化,新一轮更快的变化开启了 Javascript 的第三个时代。

在这里插入图片描述

关于 Javascript 的故事

  • 1997-2007:JS 的第一个时代

    开始时轰轰烈烈,结束时令人唏嘘。也许大家都知道 Brendan Eich (Javascript 的主要作者) 的故事,鲜为人知的是 ES4 在 Flash/Actionscript 等封闭生态系统的激烈竞争中是如何地举步维艰。Javascript 的主要作者 Brendan Eich 和 Allen Wirfs-Brock 在 《JavaScript: The First 20 Years》 一书中完整地讲述了 Javascript 的起源故事。

  • 2009-2019: JS 的第二个时代

    2009 年时神奇而具有里程碑意义的一年,这一年 npm、Node.js 和 ES5 诞生了, 随着Doug Crockford 向我们展示了Javascript的精粹 ( 《JavaScript: The Good Parts》),用户们开发了大量的 JS 构建工具和库,并将 JS 的应用范围从 桌面 PC 端拓展到 智能手机移动端。时至2019年,我们甚至看到手机端特有的 JS 运行时,比如 Facebook 的 Hermes,以及编译器优先(compiler first)的前端框架 Svelte 3 等。

第三个时代

2020 年彷佛是一个新时代的开端,如果说第一个时代是构建一门语言,第二个时代是用户用户对这门语言的探索和扩展,那么第三个时代的任务则是清除遗留假设(legacy assumptions )和缩减工具层。

缩减工具层 Collapsing Layers

将要被清除的主要遗留假设是 JS 生态系统对 CommonJS 的依赖,它演变为一系列妥协。CommonJS 的 替代者 —— ES Modules 已经等待了很长的时间,但是尚无法实现质的飞跃,因为现有的工具很慢,但是“足够好”。

在前端,现代浏览器也提供了部分支持,但重要的细节尚未解决Pika/Snowpack 项目旨在通过提供一个可以随着 ES module 的完成而失效的外观 (facade) 模式来加速这一进程。最后不得不提,IE11 将从今年(2020)开始缓慢退出历史舞台,并在 2029 年结束它的使命。

另一个将要清除的假设是,javascript 工具必须用 javascript 构建。在热路径(hot path)中类型安全和 10 到 100 倍性能加速的潜力太大而无法忽视。随着 Typescript 近乎完全代替了 Javascript,“在 JS 中 完全使用 JS”的理想不再。现在 Deno、Relay、Parcel 和 Volta 等人正在证明人们将会学习使用 Rust 来构建核心 JS 工具。Brandon Dail 预计这种转换将在 2023 年完成。我们会继续使用 JS 和 TS 编写对可接近性 (approachability) 的要求超过性能要求的大多数工具。我们曾经考虑过“功能核心,命令式外壳” (Functional Core, Imperative Shell),现在我们正在转向“系统核心,脚本外壳” (Systems Core, Scripting Shell)。

注意:这是有争议的,Python 的 PyPy 表明这不是最终结论

工具层也以有趣的方式进行缩减。Deno(现在是一家初创公司)采用了一种激进的方法来编写一个全新的运行时,将一堆测试、格式化、linting 和 bundling 等的常用工具合并到一个二进制文件中,支持 TypeScript,甚至包括一个标准库。Rome 采取了不同的策略,将所有这些工具层折叠在 Node.js 之上(据作者目前所了解的)。

公有云(AWS、Azure、GCP等) 在10年前不存在,而现在已经成为现实。Javascript 与云有着难以表达的有趣关系,云平台的开发人员不会接触 JS,但是 JS 却成为了他们最大的客户。AWS Lambda 首先与 JS 一起推出。还有一个明显的改变,是在 IDE 和 云平台之间的层级将会被折叠缩减,并移除两者之间的终端设备。Glitch、Repl.it、Codesandbox、GitHub Codespaces、Stackblitz 等都是在利用 JS 探索这个领域的云发行版(Cloud Distros)。与此同时,JAMstack 供应商,比如 Netlify 和 Vercel 等,通过折叠缩减 CI/CD 和 CDN 之间的层解决这个问题,并删除中间令人讨厌的运行服务器。

即使在前端框架中,进展也很吸引人。 Svelte 将从动画到状态管理的所有环节都折叠压缩到了编译器中。 React 正在探索 metaframeworks 和客户端-服务器集成。 Vue 正在开发一个名为 Vite 的 “unbundler” dev server 项目。

综上所述,第三个时代的 JS 工具将具有以下特点:

  • 更快
  • ESM 优先
  • 折叠缩减工具层(一个工具做好件事情,而不是多个工具做好一件事情)
  • 类型更加安全 (工具采用强类型语言构建,0配置地支持 Typescript)
  • 更安全(对于依赖攻击或者宽松权限)
  • 多语言
  • 新同构(认识到许多 JS 在到达客户端之前,应该在构建时或服务端线运行)

这些工作的最终导向是更好的开发人员体验(更快的构建,行业标准工具)和用户体验(更小的 bundles 和更快的功能交付)。这是 Javascript 从站点脚本语言到完整应用程序平台的最终蜕变。

JavaScript 之死

如果 Gary Bernhardt 的预言成真,那么第三个时代可能是 JavaScript 的最后一个时代(他认为 JS 会在2035 年退出历史舞台),总有一个隐约可见的 Web Assembly 幽灵——即使是 Brendan Eich 也将他的名言改为“Always Bet on JS - and WASM”。他最初认为 JS 可以是“通用虚拟机”,但是他后来对我说,现在 WASM 是该想法的最终实现。

如果真是这样,我们目前正处于终局(Endgame)!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值