开发者热议:微软新提议或将“彻底”改变 JavaScript 和 TypeScript!

简介: 开发者热议:微软新提议或将“彻底”改变 JavaScript 和 TypeScript!

上个月,微软刚宣布支持了一项“关于进一步开发 JavaScript 和 TypeScript ”的提议,尽管这只是一个所谓的 0 阶段提案,但微软已宣布希望按时向 TC39(技术委员会39)提交该提案。有业内开发者表示,如果这项提议被采纳并将得到实施,那么对于 JavaScript 和 TypeScript 来说将迎来一场巨变。

(相关阅读:https://segmentfault.com/a/11...

image.png

JavaScript 的 20 年奋进史

回顾过去的 20 年,如果比较一下现在和那时的 web 开发,我们就会发现,尽管JavaScript 作为一种编程语言已经发展了很多,但围绕 JavaScript 的生态系统却已取得了很大进步和发展。

究其原因,是由于:第一点,JavaScript 社区在过去 20 年里变得更加专业;第二点,互联网的一个基本问题变得越来越重要。以此同时,以上这两点是相互需要的。

image.png

众所周知,作为开发者,我们无法控制用户将使用哪些浏览器。也就是说,用户只有定期更新浏览器,才能使用 JavaScript 的最新功能。当然这也是对个人用户情况的总结,因为现在很多浏览器都会自动更新,或者在未经询问的情况下指示更新。

但对于公司而言,情况并非如此(或许由于企业对软件和软件更新有严格的规定)。许多公司经常会使用过时的软件,或使用过时的浏览器上网,这也会影响 HTML 和 CSS,此外编程语言也必须由各自的浏览器进行解释,因此具有很大的依赖性。

此时,作为一名 web 开发人员,我们将必须在两种观念之间做出选择:要么依赖于简化编程或在可用性方面带来更好结果的现代 JavaScript、CSS 或 HTML 功能,要么因过时的浏览器而无法为所有人提供这些现代功能(升级可能会导致一定数量的用户出现 bug)。

除此之外,几十年来还没有一个像样的 JavaScript 模块系统。而 Node.js 通过 CommonJS 获得了标准,但这仅限于服务器。

大约十年前,浏览器中很长一段时间没有发生任何事情,这就是为什么 Bundler 与 transpiler 一同出现的原因。尽管您使用的是一种可以正常执行的 JIT(即时)编译编程语言,但您始终需要处理一种复杂的构建过程,将源代码转换为实际代码,然后在浏览器中执行和解释(这是大约十年前的情况)。

TypeScript 的崛起

十年前,微软发明了 TypeScript。微软认为“如果你在部署之前需要一个 transpiler 来转换 JavaScript 代码,那么在这个构建过程中增加一个步骤也不会有什么大不了的”。

在这个过程中,开发者会得到一个能将现代 JavaScript 转换成普通 JavaScript 的 transpiler。此外,TypeScript 是一个静态类型系统,它使 JavaScript 更具可伸缩性,为团队高效开发 JavaScript 做出了重要贡献。

这也难怪 TypeScript 很快建立起来,并一举成为当今企业 JavaScript 开发的标准。

image.png

十年后的今天,世界发生了变化。虽然那些不更新的浏览器现在还“活着”,但它们今天所扮演的角色比过去小得多。

所以,对于 Evergreen 这样的浏览器而言,现在不使用 transpiler 也能工作,且有了 ESM(ECMAScript模块),还包括一个可在服务器端和客户端工作的基于 JavaScript 的本地模块系统。

这样一来,bundler 就用不着了,至少从技术角度来看是这样。bundler 只是优化 HTTP 请求的又一个步骤,这样就可以从服务器上加载更少的小文件,只需加载几个大文件。与此同时,构建过程也将逐渐变得更简单或更无关紧要。

目前,微软预计未来唯一剩下的必要工具,就是 TypeScript 编译器,因为 web 浏览器和其他 JavaScript 运行时环境根本无法理解 TypeScript。

也就是说,微软或 TypeScript 突然从一个非常实用的工具变成了一个相当“烦人”的东西。对此,微软表示他们不想成为阻碍,反之,他们想激励开发者。

当然,这样一来微软也会有所担心 —— JavaScript 开发迟早会像 20 年前一样快速、直接、高效,因为如果不使用 TypeScript 的话,Transpiler 这些东西迟早要被淘汰掉。

目前,打消顾虑的一种方式是:要求在 web 浏览器和其他运行时环境中集成 TypeScript,以此来作为 JavaScript 的替代编程语言。理论上,这并不牵强。

此外,TypeScript 现在也成为了一种更加复杂的编程语言,微软不希望将 TypeScript 编译器的所有功能直接集成到常见的 web 浏览器中。这将是一项非常复杂的任务,需要苹果、谷歌、Mozilla 等公司的合作,才能集成一个新的大标准。

当然,微软应该不想那样做,因此也就有了 3 月份的那份“关于进一步开发 JavaScript 和 TypeScript ”的新提议。

image.png

那么,TypeScript 是否应该保持完全独立,亦或者会变成“新的 JavaScript”呢?无论如何,我们或许会在接下来的几年里看到关于此次提议的发展。

相关文章
|
18天前
|
JSON JavaScript 前端开发
设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
|
3月前
|
JavaScript 前端开发 测试技术
[小笔记]TypeScript/JavaScript模拟Python中的Range函数
[小笔记]TypeScript/JavaScript模拟Python中的Range函数
27 0
|
24天前
|
JavaScript 前端开发 IDE
TypeScript和JavaScript有什么不同?
TypeScript和JavaScript有什么不同?
|
2月前
|
JavaScript 前端开发 开发者
JavaScript(JS)和TypeScript(TS)的区别
JavaScript(JS)和TypeScript(TS)的区别
29 0
|
2月前
|
JavaScript 前端开发 API
JavaScript 和 typescript 有什么不同?
JavaScript 和 typescript 有什么不同?
|
2月前
|
前端开发 JavaScript API
网页开发者必看!5种JS跳转页面技巧,提升用户交互体验
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
2月前
|
JavaScript 前端开发 安全
TypeScript:赋予JavaScript数据类型新的力量,提升编程效率!
TypeScript:扩展JavaScript数据类型,赋予编程更强大的表达能力!
|
3月前
|
JavaScript 前端开发 IDE
【TypeScript】带类型语法的JavaScript
【1月更文挑战第26天】【TypeScript】带类型语法的JavaScript
|
3月前
|
JavaScript 前端开发 Java
小笔记:如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成
小笔记:如何使用代码注释:关于JavaScript与TypeScript 注释和文档的自动生成
177 0
|
3月前
|
JavaScript 前端开发 索引
[ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
[ Typescript 手册] JavaScript `Array` 在 Typescript 中的接口
21 0