WebAssembly对有前端有什么影响?

最近两年的WebAssembly算是走进了千家万户的公司了,话题热度也是越来越热。 对于前端还没有做过wasm应用的同学而言,可能内心会有些疑问?

WebAssembly这么牛,将来会替代JavaScript吗?

这个问题不好正面回答,首先我们需要梳理下JavaScript的发家史。

JavaScript是美国程序员Brendan Eich10天赶出来的一个脚本语言。设计初衷是给计算机能力不是那么专业的设计师或者前端用的。

JavaScript是一个弱类型的语言,就连传统的面向对象机制都没有。 Brendan Eich没有想到的是,这门语言会发展这门迅速。一个鸡肋的语言,要能在互联网持久的存在并一直保持上升趋势,必然跟生态下的开发者息息相关。Google显然是其中的佼佼者。

Google发现浏览器上的标准脚本JS,承担了太多计算负荷,我们需要改善现状,既然JS是弱类型,那么我可以搞一个JIT(Just In Time)。也就是在JS运行前编译为机器语言。

看下这段JS代码:

function add(a, b) {
  return a + b;
}

V8会再它运行前把它通过语法解析成如下C++代码:

int add(int a, int b) {
  return a + b;
}

然后再把C++代码编译成机器码,这样一来确实大幅提升了浏览器运行JS的效率。

我们纵览下web发展历程:

  • IE时代的web,是以静态门户为首的资讯网页。
  • Chrome时代的web,是以Web Application为首的网页应用,例如gmail等。
  • WebAssembly时代的web,相信是计算能力更强、跨平台的类客户端应用,例如当下的[Google Earth, Figma, AutoCAD]。

WebAssembly有哪些不足?

WebAssembly目前被主流浏览器的厂商大力支持的,我们不用太担心兼容性的问题。 但是WebAssembly目前扮演的角色是CPU密集型的计算工作。目前还不能直接操作DOM和UI交互,所以替换Javascript的说法是不成立的。

前端同学该做什么?

题主认为,目前前端开发在互联网中的角色正在蜕变,5年以后,不再是以前的页面开发工程师,重构工程师,也不是如今的前端应用业务逻辑开发。而是负责更多、更重要、更核心的应用开发职能。

如今还没有静态语言开发经验的前端同学,我认为有必要学习一个来拓展自己的职业技能。这里推荐C++或者Rust。

本文仅表述自己的思考和观点,抛砖引玉了~

原文详情

阅读 174

推荐阅读