谷动谷力

 找回密码
 立即注册

扫一扫,访问微社区

谷动谷力 首页 编程 查看内容

让C代码在浏览器中运行——WebAssembly入门介绍

2021-6-30 16:16| 发布者: admin| 查看: 7| 评论: 0|原作者: 鸣涧_GC96O

摘要: WebAssembly作为一种新兴的Web技术,相关的资料和社区还不够丰富,但其为web开发提供了一种崭新的思路和工作方式,未来是很有可能大放光彩的。 使用WebAssembly,我们可以在浏览器中运行一些高性能、低级别的编程语 ...
WebAssembly作为一种新兴的Web技术,相关的资料和社区还不够丰富,但其为web开发提供了一种崭新的思路和工作方式,未来是很有可能大放光彩的。

使用WebAssembly,我们可以在浏览器中运行一些高性能、低级别的编程语言,可用它将大型的C和C++代码库比如游戏、物理引擎甚至是桌面应用程序导入Web平台。

截至目前为止,我们已经可以在Chrome、Firefox中使用WebAssembly,Edge和Safari对它的支持也基本完成。这意味着很快,就能在所有流行的浏览器中运行wasm了。

在这篇文章中,我们将会演示如何将简单的C代码编译为wasm,并将其包含在网页中。在此之前,我们先来直观的了解下WebAssembly是如何工作的。

WebAssembly是如何工作的?
这里不涉及过多技术性的问题。我们知道,在今天的浏览器中,JavaScript是在虚拟机(VM)中执行的,该虚拟机能够最大化地优化代码并压榨每一丝的性能,这也使得JavaScript称为速度最快的动态语言之一。但尽管如此,它还是无法与原生的C/C++代码相媲美。所以,WebAssembly就出现了。

Wasm同样在JavaScript虚拟机中运行,但是它表现得更好。两者可以自由交互、互不排斥,这样你就同时拥有了两者最大的优势——JavaScript巨大的生态系统和有好的语法,WebAssembly接近原生的表现性能。

大多数程序员会选择使用C语言来编写WebAssembly模块,并将其编译成.wasm文件。这些.wasm文件并不能直接被浏览器识别,所以它们需要一种称为JavaScript胶接代码(glue code,用于连接相互不兼容的软件组件,详见:http://whatis.techtarget.com/definition/glue-code)的东西来加载。



随着未来WebAssembly框架和本地wasm模块支持的发展,这一过程可能会有所缩短。

参考资料:

WebAssembly官网(http://webassembly.org/
WebAssembly on MDN(https://developer.mozilla.org/en-US/docs/WebAssembly
Awesome WASM(https://github.com/mbasso/awesome-wasm
Emscripten官网(https://kripken.github.io/emscripten-site/index.html




鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

QQ|Archiver|手机版|小黑屋|深圳市光明谷科技有限公司|Sunshine Silicon Corpporation ( 粤ICP备14060730号

GMT+8, 2021-7-7 17:04 , Processed in 0.086709 second(s), 24 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

返回顶部