close
logologo
指南
配置
插件
API
社区
版本
更新日志
Rsbuild 0.x 文档
English
简体中文
指南
配置
插件
API
社区
更新日志
Rsbuild 0.x 文档
English
简体中文
logologo

开始

介绍
快速上手
功能导航
名词解释

框架

React
Vue
Preact
Svelte
Solid

基础

命令行工具
开发服务器
构建产物
静态资源
HTML
JSON
Wasm
TypeScript
Web Workers
部署静态站点
升级 Rsbuild

配置

配置 Rspack
配置 Rsbuild
配置 SWC

样式

CSS
CSS Modules
CSS-in-JS
Tailwind CSS v4
Tailwind CSS v3
UnoCSS

进阶

路径别名
环境变量
模块热更新
浏览器范围
浏览器兼容性
模块联邦
多环境构建
服务端渲染(SSR)
测试

优化

代码拆分
产物体积优化
提升构建性能
静态资源内联

迁移

从 Rsbuild 0.x 迁移
webpack
Create React App
Vue CLI
Vite
Vite 插件
Modern.js Builder

调试

开启调试模式
构建性能分析
使用 Rsdoctor

常见问题

通用类问题
功能类问题
异常类问题
热更新问题
📝 在 GitHub 上编辑此页
上一页JSON
下一页TypeScript

#Wasm

Rsbuild 提供了对 WebAssembly (WASM) 模块的原生支持,允许在项目中直接导入和使用 .wasm 资源。

什么是 WebAssembly

WebAssembly(缩写为 wasm)是一种可移植、高性能的字节码格式,被设计用来在现代 Web 浏览器中执行 CPU 密集型计算任务,为 Web 平台带来了接近本地编译代码的性能和可靠性。

#引用方式

你可以在 JavaScript 文件中通过具名导入来引用一个 WebAssembly 模块:

index.js
import { add } from './add.wasm';

console.log(add); // [native code]
console.log(add(1, 2)); // 3

也可以通过 dynamic import 来引用 WebAssembly 模块:

index.js
import('./add.wasm').then(({ add }) => {
  console.log('---- Async Wasm Module');
  console.log(add); // [native code]
  console.log(add(1, 2)); // 3
});

还可以通过 new URL 语法来获取 WebAssembly 模块的路径:

index.js
const wasmURL = new URL('./add.wasm', import.meta.url);

console.log(wasmURL.pathname); // "/static/wasm/[contenthash:8].module.wasm"

#输出目录

当 .wasm 资源被引用后,默认会被 Rsbuild 输出到 dist/static/wasm 目录下。

你可以通过 output.distPath 配置项来修改 .wasm 产物的输出目录。

export default {
  output: {
    distPath: {
      wasm: 'resource/wasm',
    },
  },
};

#类型声明

当你在 TypeScript 代码中引用 Wasm 文件时,通常需要添加相应的类型声明。

比如 add.wasm 文件导出了 add() 方法,那么你可以在同级目录下创建一个 add.wasm.d.ts 文件,并添加相应的类型声明:

add.wasm.d.ts
export const add: (num1: number, num2: number) => number;