点击上方 前端Q,关注公众号
回复加群,加入前端Q技术交流群
webassembly 概念
WebAssembly
是一种运行在现代网络浏览器中的新型代码,并且提供新的性能特性和效果。它设计的目的不是为了手写代码而是为诸如C、C++和Rust等低级源语言提供一个高效的编译目标。什么是编译目标?当我们写 TypeScript 的时候,Webpack 最后打包生成的 JavaScript 文件就是编译目标。也就是说,你不需要直接写 WebAssembly 代码,而是从其他高级语言编译过来就行。
webassembly 有什么优点
快速、高效
WebAssembly 的二进制文件比 JavaScript 文本文件小得多,因而下载速度更快。其解析和执行速度也更快。对比 JavaScript,JavaScript 是一种动态类型语言,不必事先定义变量类型,也不需要提前编译。这使得代码编写变得简单快捷,但这也意味着 JavaScript 引擎有大量的额外工作。JavaScript 引擎在运行 JavaScript 代码的时候,必须解析,编译并优化代码。而 WebAssembly 本身就以二进制形式提供,解析速度更快,且它是静态类型的,其引擎在编译期间不需要类型推断,也没有垃圾收集等。WebAssembly代码在不同平台上能够以接近本地速度运行。
js 和 webassembly 的执行过程对比:
WebAssembly 执行快更详细的原因可以看这里
长按识别二维码查看原文
https://zhuanlan.zhihu.com/p/422541443
可移植、灵活
使用 WebAssembly ,只需要一次编译,您的应用程序将可以在每个现代浏览器中运行。使用“原生”模块也就没那么复杂,如果开发人员可以跨不同平台 (例如,在 Web 和桌面应用程序) 共享同一脚本语言或低级语言代码库,则可以节省开发时间并降低维护成本。而WebAssembly 为你提供了一种在不降低这些平台性能的前提下实现此目标的方法。
安全
WebAssembly 默认为你提供轻量级沙箱,像其他网络代码一样,它遵循浏览器的同源策略和授权策略。