使用我们的新指南开始开发 WebAssembly

WebAssembly 的开发可以有多种方向,具体取决于您已知的知识和您尝试构建的内容。下载我们的 WebAssembly 新指南。
2 位读者喜欢这篇文章。
Programming at a browser, orange hands

opensource.com

在过去的几十年里,Web 浏览器一直是最流行的跨平台应用程序。从另一个角度来看,浏览器是应用程序交付最流行的平台之一。想想您使用的所有网站,它们取代了您过去使用桌面软件所做的活动。您仍然在使用软件,但您正在通过浏览器访问它,并且它在别人的 Linux 服务器上运行。为了优化我们使用的所有软件,软件开发领域在 2019 年引入了 WebAssembly,作为一种通过 Web 浏览器运行编译代码的方式。应用程序性能比以往任何时候都更好,并且编码选项远远超出了 PHP、Python 和 JavaScript 的常用列表。

目标和语言

关于 WebAssembly,一个强大但也最令人困惑的事情是,“webassembly”这个术语既指一种语言,也指一个目标。 WebAssembly 是一种汇编语言,但很少有人选择直接用汇编语言编写代码。 即使是汇编语言最终也会转换为二进制格式,这是计算机运行代码所需要的。 这种二进制格式也称为 WebAssembly。 不过,这很好,因为这意味着您可以使用您选择的语言来编写最终以 WebAssembly 形式交付的内容,包括 C、C++、Rust、Javascript 等等。

进入 WebAssembly 的门户是 Emscripten,一个 LLVM 编译器工具链,可以从您的代码生成 WebAssembly。

安装 Emscripten

要在您的 Linux 或 macOS 计算机上安装 Emscripten,请使用 Git

$ git clone \
https://github.com/emscripten-core/emsdk.git

将目录更改为 emsdk 目录并运行安装命令

$ ./emsdk install latest
$ ./emsdk activate latest

Emscripten 工具链中的所有内容都安装在 emsdk 目录中,并且对系统的其余部分没有影响。 因此,在使用 emsdk 之前,您必须获取其环境

$ source ./emsdk_env.sh

如果您计划经常使用 emsdk,您也可以在 .bashrc 中获取其环境设置脚本。

要在 Windows 上安装 Emscripten,您可以在 WSL 环境中运行 Linux。

访问 Emscripten 网站 以获取更多安装信息。

Hello world

这是一个用 C++ 编写的简单“hello world”应用程序。

#include <iostream>

using namespace std;

int main() {
    cout << "Hello world";
    return 0;
}

首先将其作为系统的标准二进制文件进行测试

$ g++ hello.cpp -o world
$ ./world
Hello world

看到它按预期工作,使用 emcc 将其构建为 WebAssembly

$ emcc hello.cpp -o world.html

最后,使用 emrun 运行它

$ emrun ./world.html

emrun 实用程序是一个方便本地测试的命令。 当您在服务器上托管您的应用程序时,emrun 不是必需的。

了解更多关于 WebAssembly 的信息

WebAssembly 的开发可以有多种方向,具体取决于您已知的知识和您尝试构建的内容。 如果您了解 C 或 C++,那么您可以使用这些语言编写您的项目。 如果您正在学习 Rust,那么您可以使用 Rust。 即使是 Python 代码也可以使用 Pyodide 模块作为 WebAssembly 运行。 您有很多选择,并且没有错误的开始方式(甚至还有一个 COBOL 到 WebAssembly 的编译器)。 如果您热衷于开始使用 WebAssembly,下载我们的免费电子书

接下来阅读什么

WebAssembly 指南

为了优化我们使用的所有软件,软件开发领域在 2019 年引入了 WebAssembly,作为一种通过 web 运行编译代码的方式……

标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算行业工作,而且经常同时进行。

评论已关闭。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.