快速启动 Rust + WebAssembly 项目

一、 模板一:wasm-pack-template

适合目标:构建一个 Rust 写的 WebAssembly npm 包

这是最常用、也是最官方推荐的起点模板。它提供了:

  • Cargo.toml 配置好 WebAssembly 的 crate 类型(cdylib
  • 已设置 wee_alloc 和 panic hook
  • 集成 wasm-bindgen 与类型定义导出
  • 支持通过 wasm-pack 构建并发布到 npm

1.1. 启动项目:

bash 复制代码
cargo install cargo-generate
cargo generate --git https://github.com/rustwasm/wasm-pack-template.git

1.2.构建:

bash 复制代码
wasm-pack build

此模板非常适合用来写 一个功能独立的 Rust 模块,供 JS/TS 项目消费,比如图像处理、压缩算法、文本解析器等。

二、模板二:create-wasm-app

适合目标:JS/TS 项目,需要调用 Rust 生成的 .wasm 模块

这是一个前端侧的模板,它用于创建一个消费 npm 上 .wasm 包的 JS 项目,集成了 webpack、TS、热更新等现代前端配置。

2.1.启动项目:

bash 复制代码
mkdir my-project
cd my-project/
npm init wasm-app

2.2.配合方式:

通常与 wasm-pack-template 项目搭配使用,方法如下:

bash 复制代码
# 假设你在 rust-wasm-lib/ 中使用 wasm-pack-template 构建了库
cd rust-wasm-lib/
wasm-pack build
npm link

# 然后在 JS 项目中引入
cd ../my-project/
npm link rust-wasm-lib

你也可以把构建好的 .wasm 包发布到 npm,然后在前端项目中 npm install 来引入。

三、模板三:rust-webpack-template

🧰 适合目标:希望使用 webpack 打包 Rust 和 JS 的一体化项目

这是一个高级模板,它将 Rust 项目直接通过 webpack 的 rust-loader 集成进前端构建流程。适合那些习惯用 Webpack 构建一切的人。

3.1.启动项目:

bash 复制代码
mkdir my-project
cd my-project/
npm init rust-webpack

3.2. 特点:

  • 使用 rust-webpack-plugin 自动构建 .wasm
  • 可热更新
  • 适合纯 JS + Rust 混合项目,如游戏/图形引擎/WebGL 应用

四、三者之间的关系和组合

模板名 用途 适合角色
wasm-pack-template 构建 .wasm npm 包(Rust 编写) 类库作者
create-wasm-app 构建前端消费 .wasm 的 JS 项目 应用开发者
rust-webpack-template Rust + JS 一体化项目构建 全栈工程师 / 游戏开发

你可以这样组合:

text 复制代码
[wasm-pack-template] → 构建成 npm 包 → 被 [create-wasm-app] 安装使用

五、小结与推荐

  • 如果你是第一次接触 Rust Wasm,推荐从 wasm-pack-template 入手 ,体会 .wasm 是怎么从 Rust 生成并暴露给 JS 使用的。
  • 如果你已经有前端项目,希望引入 Rust 模块增强性能或功能,选择 create-wasm-app
  • 如果你倾向于一体化构建方案、全栈工程,使用 rust-webpack-template 更加流畅。

六、实战建议

  • 在 CI/CD 中结合 wasm-pack build,实现自动发布 .wasm npm 包。
  • 若需最大体积优化,搭配使用 wasm-opt
  • 发布到 npm 前,务必更新版本号,避免冲突。

如果你想要我帮你构建一个基于这些模板的项目骨架、或搭建 GitHub Actions 自动构建 .wasm + npm 发布流程,欢迎随时告诉我!

相关推荐
无忧.芙桃4 分钟前
C++IO库的超详细讲解
开发语言·c++
朗迹 - 张伟11 分钟前
用AI开发QT——Qt与Trae开发环境搭建
开发语言·qt·策略模式
雨辰AI14 分钟前
从 MySQL 迁移至人大金仓 V9 完整改造指南|分页 / 函数 / 语法兼容全部解决
java·开发语言·数据库·后端·mysql·政务
MATLAB代码顾问20 分钟前
改进鲸鱼优化算法(IWOA)求解柔性作业车间调度问题(FJSP)——附MATLAB代码
开发语言·算法·matlab
阿里嘎多学长38 分钟前
2026-05-03 GitHub 热点项目精选
开发语言·程序员·github·代码托管
yqcoder42 分钟前
JavaScript 数据类型全景图:从基础到进阶
开发语言·javascript·ecmascript
rKWP8gKv71 小时前
单例模式在Java中的7种实现:从懒汉式到静态内部类
java·开发语言·单例模式
xingpanvip1 小时前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
无忧.芙桃1 小时前
现代C++讲解之变量模板,泛型lambda,函数返回类型推导的使用
开发语言·c++·visualstudio
格林威2 小时前
工业视觉检测:两大主流异常检测开源框架深度对比(PatchCore vs SPADE)
开发语言·人工智能·深度学习·数码相机·计算机视觉·视觉检测·工业相机