简述
WebAssembly 的安全模型有两个重要目标 -
编译后的代码,即来自 C/C++/Rust 的 WASM 并不直接在浏览器内执行,而是使用 Javascript API。WASM 代码是沙盒化的,即通过 Javascript API 包装器执行,浏览器使用 API 与 WASM 对话。
这是在浏览器中使用 .wasm 文件的示例。
示例 - C 程序
#include<stdio.h>
int square(int n) {
return n*n;
}
我们将使用 WASM explorer 来获取 wasm 代码 -
下载 WASM 代码并使用它来测试 api。
例子
<script type="text/javascript">
const importObj = {
module: {}
};
fetch("findsquare.wasm")
.then(bytes => bytes.arrayBuffer())
.then(module => WebAssembly.instantiate(module,importObj))
.then(finalcode => {
console.log(finalcode); console.log(finalcode.instance.exports.square(25));
});
</script>
输出
您将获得以下输出 -
导出对象具有对要调用的函数的引用。要调用函数 square,您必须执行以下操作 -
console.log(finalcode.instance.exports.square(25));