您所在的位置:首页 - 好文分享 - 正文好文分享

WebAssembly——继HTML、CSS、JavaScript之后第4种Web语言

流量卡推荐网 流量卡推荐网 2023-10-31 【好文分享】 1299人已围观

摘要本篇关于WebAssembly介绍文章来源:作者cz阿鱼原创,公众号<前端精湛掌握>2023-10-23发表于北京欢迎搜索并关注。前言WebAssembly(Wasm)是由Mozilla、谷歌、微软、苹果等公司合作研发的二进制指令格式语言,兼容Web的全新格式,最初是为浏览器设计的,具有内存安全、可移植等特性,发展历程

本篇关于WebAssembly介绍文章来源: 作者cz阿鱼原创,公众号<前端精湛掌握> 2023-10-23 发表于北京 欢迎搜索并关注。

前言

WebAssembly(Wasm)是由 Mozilla 、谷歌、微软、苹果等公司合作研发的二进制指令格式语言,兼容 Web 的全新格式,最初是为浏览器设计的,具有内存安全、可移植等特性,

发展历程

发展历程.png

发展历程

现在浏览器都已经支持Wasm.可以通过js的Api直接使用wasm的模块,充分利用其性能,还能保持js的灵活性。

如何使用

Emscripten SDK开源编译工具链用于把各种支持的语言编译成 wasm提供给js使用。

首先 C 代码新建文件命名为 hello.c

#include <stdio.h>
#include <emscripten/emscripten.h>
int main(int argc, char ** argv) {
printf(“Hello World\n”);
}
#ifdef __cplusplus
extern “C” {
#endif
int EMSCRIPTEN_KEEPALIVE myFunction(int argc, char ** argv) {
printf(“我的函数已被调用\n”);
}
#ifdef __cplusplus
}
#endif

2. Emscripten 编译环境的终端窗口中,进入 hello.c 文件的文件夹中,然后运行下列命令

emcc hello.c -s WASM=1 -o hello.html

3.在HTML中使用


<button>点我点我</button>
 <script type="text/javascript">
     document.querySelector('myButton').addEventListener('click', function() {
         var result = Module.ccall(
             'myFunction', // C代码中的方法名
             null, // 函数返回值类型
             null, // 参数类型
             null // 参数
         )
     })
 </script>

在开发时利用 WebAssembly 的应用时使用或尝试过使用的语言统计如下:

图片

Rust 连续第三年成为 WebAssembly 最常用的语言。Rust 一直非常适合 WebAssembly;它是一种广泛流行的现代系统级语言(Stack Overflow 连续七年显示它是最受欢迎的语言),它也恰好是一种用于编写 WebAssembly 运行时和平台的流行语言。

JavaScript 是第二广泛使用的编程语言。尽管无法直接将 JavaScript 编译为 WebAssembly,但可以通过将 JavaScript 代码运行时编译为 WebAssembly 来实现在 WebAssembly 中执行 JavaScript 代码的方式。在这种方法中,代码将在 WebAssembly 托管的解释器中运行。尽管可能会牺牲一些性能,但出人意料地实用,并且越来越受欢迎。虽然可能无法从速度上获得优势,但确实可以受益于 WebAssembly 的安全性和隔离性。

目前应用

除了原本主要应用于游戏、视频等高性能场景之外,WASM还可以被应用于诸如AI、机器学习、图像处理等其他领域。尤其随着近年来深度学习模型依赖GPU运算的需求增长,以及云计算资源逐渐廉价化和普及化,使用WASM进行客户端远程推理或边缘计算变得日益可行

其他方面

Docker联合创始人 Solomon Hykes如果 Wasm + WASI 在 2008年就存在了,就没有必要创建 Docker 了 也调侃说’如果早点出现话我就不发明docker'.

大多观点认为,相比 Docker,Wasm 的确具有更快更轻等优越性

Wasm 会取代 Docker 吗?

nononono,WebAssembly 与 Docker 各有所长、互相补足的关系, WebAssembly 的性能高、轻量级、安全的特点会让 WebAssembly 用在 Docker 进不去的场景。

Docker  Wasm功能目前已经处于测试阶段了。

WebAssembly是一个非常有前途的技术,小精也会持续关系后面的发展,第一时间将最新信息展现出来。

ps1:今天文章内容输出比较少,在这里给各位道个歉,实在是小精最近事太多,脑细胞不太够用了T_T


Tags: WebAssembly HTML CSS JavaScript Web语言

相关文章

文章评论 (暂无评论,1299人围观)

流量卡推荐网

流量卡推荐网

正规、包邮、无套路,主打安全实用!本站只做推荐,有保障!

284 文章数
6 评论数
420643 浏览数

友情链接

站点信息

  • 文章总数:284
  • 页面总数:1
  • 分类总数:9
  • 标签总数:444
  • 评论总数:6
  • 浏览总数:420643
icp粤ICP备2022093202号
取消
微信二维码
支付宝二维码

目录[+]