WebAssembly的概念
WebAssembly
之前没有了解WebAssembly,近期了解下WebAssembly的基本概念
一、何为WebAssembly
-
WebAssembly是一门低阶语言,是一种类汇编语言,不同于JavaScript是门高级语言。
-
WebAssembly是一种运行在现代网络浏览器中的新型代码,并且提供新的性能特性和效果。它设计的目的不是为了手写代码而是为诸如C、C++和Rust等低级源语言提供一个高效的编译目标。
-
WebAssembly的模块可以被导入的到一个网络app(或Node.js)中,并且暴露出JavaScript使用的WebAssembly函数。JavaScript框架不但可以使用WebAssembly获得巨大性能优势和新特性,而且还能使得各种功能保持对网络开发者的易用性。
简单来说, WebAssembly被创造出来,是用来解决JavaScript在性能上不足的问题,如AR、VR、高性能绘图等。但 WebAssembly是一门低阶的类汇编语言。
二、WebAssembly在app中使用的原理
对于类汇编语言如何在实际生产中使用的疑惑
原理的核心是
1.代码的二进制格式
2.加载运行该二进制代码的API
根据原理的具体实现是:
1.使用Emscripten移植一个C/C++应用程序(Emscripten是WebAssembly生态系统里的一种编译器,将C/C++ 编译成JS代码)。
2.直接在汇编层,编写或生成WebAssembly代码。
3.编写Rust程序,将WebAssembly作为它的输出。(Rust是一种编程语言,具体语法与C/C++类似)
Emscripten工具能够将一段C/C++代码,编译出:
- 一个.wasm模块
- 用来加载和运行该模块的JavaScript”胶水“代码
- 一个用来展示代码运行结果的HTML文档
参考链接:
https://developer.mozilla.org/zh-CN/docs/WebAssembly/Concepts
https://juejin.im/post/5be293daf265da616c65157e