极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:24
登录|注册

谁将取代JavaScript?

讲述:丁婵大小:7.41M时长:05:24
谁能取代 JavaScript 似乎是一个老生常谈的话题,很多人都提出过不同看法。最近,InfoQ 编译了微软技术专家麦克唐纳(Matthew MacDonald)的文章,他认为 JavaScript 风头正劲,但 WebAssembly 可能已经敲响了它的丧钟。以下是重点内容,希望对你有所帮助。
在 JavaScript 征服世界的同时,有人播下了一颗小小的种子,这颗种子可能在将来的某一天成长为参天大树,敲响 JavaScript 的丧钟——这就是名为 asm.js 的实验性技术。
不过展开这个故事之前,我们先了解下现状。

转译:当前方法

自从我们有了 JavaScript,开发人员就一直在设法绕开它。早期的一种方法是使用插件把代码从浏览器中剥离,结果失败了;另一个想法是开发出可以转换代码的开发工具,换句话说就是采用另一种更受欢迎的语言编写代码,然后将其转换为 JavaScript。
将一种语言转换为另一种语言的过程称为转译(transpiling),其存在一些明显的缺陷。高级语言有着各自不同的功能、语法和习惯表达,你不可能把一种语言中的每一行都映射到另一种语言中的等效构造上,就算你能做到这一点也会留下许多坑。如果社区停止开发你最喜欢的转译器该怎么办?如果转译器自己就引入了许多错误该怎么办?想要插入 Angular、React 或 Vue 这样的 JavaScript 框架又要怎么解决?如果你会的语言和同事不一样,你又该如何与团队协作?
现在,转译器很常见,但它们的用途几乎只有一条,那就是处理向后兼容性。
开发人员可能会编写最前沿的 JavaScript,然后使用转译器将其代码转换为等效的老式 JavaScript 代码,以便在所有位置运行。或者更好的办法是,他们使用 TypeScript,然后将其转换为 JavaScript。但不管是哪种方法,你都逃不出 JavaScript 的手掌心。

asm.js:垫脚石

这一情况在 asm.js 出现后得到了改善,asm.js 是 Mozilla 的开发人员在 2013 年完成的一项实验,当时他们正在寻找在浏览器中运行高性能代码的方法,但 asm.js 并没有像插件那样尝试在浏览器外部运行,相反,它的目标是直接通过 JavaScript 虚拟机打出一条通道。
从本质上讲,asm.js 是简洁且优化的 JavaScript 语法。它比普通的 JavaScript 运行得更快,因为它避免了这种语言中较慢的动态部分。而且支持它的 Web 浏览器也可以应用其他优化,从而显著提升性能。换句话说,asm.js 遵循黄金法则:不要破坏 Web,同时提供了一条未来改进的途径。
asm.js 的最大意义在于,它迫使开发人员重新思考 JavaScript 扮演的角色。asm.js 代码是 JavaScript,但这些代码并不是让程序员手工读写的,而是由转译器构建,并直接提供给浏览器的。JavaScript 是媒介,但不是信息本身。

WebAssembly:一项新技术

随着 WebAssembly 诞生,情况发生了改变。
WebAssembly 诞生于 2015 年,目前 Chrome、Edge、Safari 和 Firefox 四大浏览器都完全支持它。它既是 asm.js 的后继产品,又是一项截然不同的技术。这是一种紧凑的二进制代码格式,像 asm.js 一样,WebAssembly 代码也被输入到 JavaScript 执行环境中,它具有相同的沙箱和相同的运行时环境。与 asm.js 一样,WebAssembly 的转译机制也可以进一步提升效率,并且浏览器可以完全跳过 JavaScript 解析阶段,对于一段普通的逻辑来说,WebAssembly 的执行速度远远快于常规的 JavaScript,几乎与原生编译的代码一样快。

WebAssembly 与 Web 开发的未来

WebAssembly 最初是为了满足 C++ 和 Rust 等需求而诞生的,但在不久的将来,它会支持非 JavaScript 框架,与 Angular、React 和 Vue 等基于 JavaScript 的对手同台竞技。
目前 WebAssembly 只能在一些重点场景中使用,还不是万能的 Web 开发方法,但随着不断推广,它也会不断进化。如果 WebAssembly 开始流行,它将进入一个良性循环,不断发展,很容易就能超越 JavaScript 的固有优势。
人们常说,WebAssembly 并不是用来代替 JavaScript 的。但这句话对所有革命性平台都是一样的。JavaScript 当初并不是要取代嵌入浏览器的 Java,Web 应用程序并非旨在替代桌面应用。但一旦能做到这些,它们必然会走上那条路。
以上就是麦克唐纳的思考,你是否认同呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • 第一装甲集群司令克莱斯特
    rust,到底是何方妖孽,看起来这么火呢?
  • 木木
    rust 又拿下重要一分,也许应该说好几分
收起评论
大纲
固定大纲
转译:当前方法
asm.js:垫脚石
WebAssembly:一项新技术
WebAssembly 与 Web 开发的未来
显示
设置
留言
2
收藏
22
沉浸
阅读
分享
手机端
快捷键
回顶部