WebAssembly初探

举报
XiuqiaoLi 发表于 2020/02/28 17:04:07 2020/02/28
【摘要】 1. 介绍WebAssembly是一种Web浏览器端运行二进制代码的新方式,C/C++/RUST/Go等语言目前均有支持。它并不是用来取代JavaScript,而是和JavaScript协同工作,用于执行性能敏感的功能。主流的浏览器包括Chrome、Firefox、Edge等均已支持运行WebAssembly。具体来说,它的主要优势包括:l 高性能且可移植:WebAssembl...

1.       介绍

WebAssembly是一种Web浏览器端运行二进制代码的新方式,C/C++/RUST/Go等语言目前均有支持。它并不是用来取代JavaScript,而是和JavaScript协同工作,用于执行性能敏感的功能。主流的浏览器包括ChromeFirefoxEdge等均已支持运行WebAssembly。具体来说,它的主要优势包括:

l  高性能且可移植:WebAssembly可以以接近原生的性能跨平台运行

l  可读性好且支持调试:WebAssembly是底层汇编语言,执行程序可包含编译符号信息

l  安全:WebAssembly运行在安全沙箱环境中


2.       初探

Emscripten工具可用来编译用C/C++编写的WebAssembly程序,该工具可以从源码编译安装,也提供一部分平台上的预编译版本。简单的方式是直接使用Docker容器运行已预制好的环境。

 

# cat hello.c

#include <stdio.h>

 

int main() {

         printf("I'm from web assembly\n");

         return 0;

}

 

docker run --rm -v /host_dir:/container_dir trzeci/emscripten emcc / container_dir/hello.c -s WASM=1 -o / container_dir/hello.html

 

上述编码命令执行后将自动生成wasm字节码文件、javascript文件和示例的html文件,其中javascript文件中加载wasm,并将执行输出设置到html中的文件框中。

 

# ls /host_dir

hello.html  hello.js  hello.wasm

 

将上述文件拷贝到web服务器的发布目录中,如Tomcat

 

# ls /var/lib/tomcat/webapps

hello.html  hello.js  hello.wasm

 

Tomcat管理界面中发布后,即可在浏览器中预览效果:

 

1582880573150803.png


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。