Jupyter AI

6 创建第一个WebAssembly项目

📅 发表日期: 2024年8月15日

分类: 🌐WebAssembly 入门

👁️阅读: --

在上一篇中,我们讨论了如何配置开发环境以支持WebAssembly的开发。在本篇中,我们将带您一步步创建您的第一个WebAssembly项目,确保您能顺利开始编写和运行WebAssembly代码。

项目结构

首先,创建一个新的项目文件夹。假设我们将项目命名为 hello-wasm,在您的终端中运行以下命令:

mkdir hello-wasm
cd hello-wasm

在这个文件夹中,我们将创建两个主要的文件:

  1. hello.wat:WebAssembly文本格式文件。
  2. index.html:一个简单的HTML文件,用于展示我们的WebAssembly模块。
touch hello.wat index.html

创建WebAssembly模块

接下来,我们在 hello.wat 文件中编写我们的WebAssembly代码。打开 hello.wat 文件,并输入以下内容:

(module
  (export "sayHello" (func $sayHello))
  (func $sayHello (result i32)
    (i32.const 42) ;; 这个函数返回42
  )
)

这个模块定义了一个简单的函数 sayHello,它返回一个整数 42。这里我们使用了WebAssembly文本格式(WAT),它更易于人类阅读和书写。

编译WebAssembly模块

为了将 hello.wat 文件编译为二进制的WebAssembly格式(.wasm),我们需要使用 wat2wasm 工具。确保您已经安装了 WebAssembly Binary Toolkit(WABT),您可以通过以下命令来编译:

wat2wasm hello.wat -o hello.wasm

完成后,您将在项目目录中看到一个新的文件 hello.wasm

创建HTML界面

现在,我们需要在 index.html 文件中加载和运行这个WebAssembly模块。打开 index.html 文件,并添加以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Hello WebAssembly</title>
</head>
<body>
    <h1>Hello WebAssembly</h1>
    <button id="runBtn">Run WebAssembly</button>
    <p id="output"></p>

    <script>
        // 加载WebAssembly模块
        const runBtn = document.getElementById('runBtn');
        const output = document.getElementById('output');

        WebAssembly.instantiateStreaming(fetch('hello.wasm'))
            .then(obj => {
                const sayHello = obj.instance.exports.sayHello;
                
                runBtn.onclick = () => {
                    const result = sayHello();
                    output.textContent = `WebAssembly says: ${result}`;
                };
            })
            .catch(err => {
                console.error('Error loading WASM:', err);
            });
    </script>
</body>
</html>

在这里,我们设置了一个简单的HTML界面,包含一个按钮用于触发WebAssembly模块的执行,并在点击后将结果展示在页面上。

运行项目

现在,您已经完成了WebAssembly模块的创建和HTML界面的设置。接下来,我们需要使用一个HTTP服务器来运行这个项目。为了简单起见,您可以使用 python 提供的HTTP服务器,命令如下:

python3 -m http.server

这将在当前目录开启一个HTTP服务器,通常默认使用8000端口。您可以在浏览器中访问 http://localhost:8000/

点击网页上的 “Run WebAssembly” 按钮,您应该会在页面上看到 WebAssembly says: 42 的输出。

结论

通过本篇教程,您成功创建了您的第一个WebAssembly项目,包括一个简单的WebAssembly模块和一个加载它的HTML页面。在下一篇中,我们将更深入地探讨WebAssembly的基本语法,特别是WebAssembly文本格式(WAT)的细节。希望您享受这个过程,期待您的继续探索!