博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何在Node.js中使用WebAssembly
阅读量:7119 次
发布时间:2019-06-28

本文共 900 字,大约阅读时间需要 3 分钟。

hot3.png

WebAssembly的一个优点是编译生成的wasm文件,既可以用于Web客户端,也可以用于运行在任何操作系统的Node.js服务端。

编译

创建一个简单的test.c:

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

使用编译生成test.js和test.wasm文件

emcc test.c -O2 -s WASM=1 -Wall -s MODULARIZE=1 -o test.js

Node.js应用

创建index.js:

const Module = require('./test.js');const wasm = Module({wasmBinaryFile: 'test.wasm'});wasm.onRuntimeInitialized = function() {    console.log(wasm._add(40, 40));};

通过onRuntimeInitialized事件可以知道wasm文件已经被加载完了。接下来就可以调用C的接口。

Web应用

在HTML页面中导入test.js

监听wasm文件的加载状态:

var wa_add;if (Module) {    wasm = Module({        wasmBinaryFile: 'test.wasm'    });    wasm.onRuntimeInitialized = function () {        document.getElementById('anim-loading').style.display = 'none';        wa_add = wasm._add;    };}

这里的Module已经被定义在test.js中。

webassembly demo

源码

转载于:https://my.oschina.net/yushulx/blog/1927511

你可能感兴趣的文章
cxgrid实现分组统计和添加Footer
查看>>
刘敏华:2013年网络营销行业展望
查看>>
理解MySQL——架构与概念
查看>>
vsftpd虚拟用户
查看>>
ionic 幻灯指令 ion-slide-box
查看>>
发一个经典的Flask-SQLAlchemy使用场景
查看>>
iOS逆向之自动化重签名
查看>>
java 读取pdf、word、Excel文件
查看>>
递归处理vue菜单数据
查看>>
html5 图片热点area,map的用法
查看>>
Java集合框架知多少——干货!!!
查看>>
P2030 - 【BJOI2006】狼抓兔子
查看>>
【随想】关于图灵机
查看>>
echarts 通过ajax实现动态数据加载
查看>>
结构化方法与面向对象方法之比较
查看>>
Pig调试环境
查看>>
Python连接MySQL数据库
查看>>
BZOJ2815:[ZJOI2012]灾难(拓扑排序,LCA)
查看>>
[转] js对象监听实现
查看>>
【leetcode】714. Best Time to Buy and Sell Stock with Transaction Fee
查看>>