当前位置: 首页 > news >正文

Rust × WebAssembly 项目脚手架详解

一、模板概览

模板生成方式核心用途典型角色
wasm-pack-templatecargo generate …Rust 代码 打包成 npm 库「底层算法/组件」作者
create-wasm-appnpm init wasm-app构建纯 JS/TS 项目,消费上面生成的 npm 包Web 前端/Node 服务
rust-webpack-templatenpm init rust-webpack自带 Webpack & rust-loader,前端与 Rust 热编译一体同 repo 混合开发

一句话理解

  • wasm-pack-template 造轮子,输出 .wasm + JS 包装器
  • create-wasm-app 装轮子,专注业务逻辑
  • rust-webpack-template 把「造轮子 + 装轮子」合并到一个工程里,适合迅速原型

二、wasm-pack-template——“Rust → npm”的起点

1. 快速上手

cargo install cargo-generate              # 若未安装
cargo generate \--git https://github.com/rustwasm/wasm-pack-template.git \--name my-wasm-lib
cd my-wasm-lib
wasm-pack build --release --target bundler

生成目录结构:

my-wasm-lib/
├── src/lib.rs          # 写 Rust 逻辑
├── Cargo.toml
└── pkg/                # wasm-pack 输出:.wasm + JS 包装文件

2. 关键特性

  • wasm-bindgen 已接入#[wasm_bindgen] 让 Rust 函数暴露给 JS
  • 测试与 CI 模板:开箱集成 wasm-bindgen-test、GitHub Action
  • TypeScript 类型声明pkg/*.d.ts 自动生成,IDE 友好
  • npm publishwasm-pack publish 秒发 npm

3. 与 JS 项目联调

cd my-wasm-lib
npm link            # 全局软链cd ../front-app
npm link my-wasm-lib

即可在前端代码里 import init, { foo } from 'my-wasm-lib'

三、create-wasm-app——“JS 消费 wasm 库”的最佳拍档

1. 初始化

mkdir front-app && cd $_
npm init wasm-app    # 交互式选择:JS / TS、打包工具等
npm install          # 装依赖
npm run start        # 本地 dev server,自动加载 .wasm

2. 项目亮点

  • 零配置加载 wasm:脚手架已注入 init() + await 处理
  • 支持 TS:可直接 import type 的 d.ts
  • vite / webpack / parcel 多框架可选(新版本)

3. 结合自研 wasm 库

  1. package.json 加入 "my-wasm-lib": "file:../my-wasm-lib/pkg"
  2. run npm install,即可获取本地编译产物
  3. import { add } from "my-wasm-lib";

四、rust-webpack-template——前后端一体化热编译

1. 生成项目

mkdir wasm-fullstack && cd $_
npm init rust-webpack
npm run start

默认结构:

src/lib.rs              # Rust 入口
webpack.config.js
index.js              # 前端逻辑,已 import './pkg'

2. 为什么选它

特性说明
热更新 HMR改 Rust -> wasm-pack watch -> Webpack reload
rust-loaderWebpack loader 直接调用 wasm-pack build
统一依赖npm install 即可管理前后端包

3. 适用场景

  • 前端业务少、算法核心多,想要 改代码 ⇢ 浏览器秒刷新
  • Hackathon / Demo 期望 5 分钟跑通

五、典型工作流组合

方案 A:代码分仓,产物 npm 依赖(推荐团队协作

在这里插入图片描述

  • wasm-lib 用 wasm-pack-template
  • ui-app 用 create-wasm-app
  • 优点:职责清晰,版本控制友好

方案 B:单仓库极速原型(个人项目

在这里插入图片描述

  • 一条 npm run start 启动全栈
  • 缺点:Rust 与 Node 依赖都塞在 package.json,后期拆分略麻烦

六、常见问题 FAQ

症状解决方案
wasm-pack 提示 wasm32-unknown-unknown unavailablerustup target add wasm32-unknown-unknown
Module not found: rust-loaderrust-webpack-template 内置;其他脚手架请用 wasm-pack build 先产物
TypeError: WebAssembly.instantiate 跨域dev server 需启用 --headers 'Access-Control-Allow-Origin:*',或改用 fetch('/pkg/pkg_bg.wasm')
IE11 报崩wasm2js 转 asm.js 或选择降级方案

七、结语与实践建议

  • 先选模板,再写业务:早期踩好脚手架能省掉 80% 配置工夫
  • 生产环境请务必在 CI 流水线 wasm-pack build --release + wasm-opt -Oz,体积可缩减 30-50%
  • 关注 rustwasm 工作组 的新模板,如基于 Vite / SWC 的现代版本

动手吧! 五分钟复制下方命令,你的第一个 Rust → WebAssembly 项目,就此诞生!

# 1) 造轮子
cargo install cargo-generate wasm-pack
cargo generate --git https://github.com/rustwasm/wasm-pack-template.git --name my-wasm-lib
cd my-wasm-lib && wasm-pack build --release# 2) 装轮子
mkdir my-app && cd $_
npm init wasm-app
npm install ../my-wasm-lib/pkg            # or `npm link`# 3) 运行
npm run start

祝编码愉快,WASM 王者之路扬帆起航 🚀

http://www.dtcms.com/a/308501.html

相关文章:

  • Linux服务器性能检测与调优指南
  • 深入解析LLM层归一化:稳定训练的关键
  • 【04】大恒相机SDK C++发开——调试千兆网相机心跳超时设备掉线
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | FeedbackUiDesign(评价反馈组件)
  • 工程项目管理软件选型对比:主流平台功能与适用场景深度测评
  • [12月考试] F
  • 用el-table实现的可编辑的动态表格组件
  • 微信小程序中进行参数传递的方法
  • 【Linux】的起源 and 3秒学习11个基本指令
  • JSX语法
  • 关于AI的使用感想
  • Maven模块化开发与设计笔记
  • 深入解析 Spring AI 系列:剖析OpenAI接口接入组件
  • WEditor:高效的移动端UI自动化脚本可视化编辑器
  • Vibe Coding:AI驱动开发的安全暗礁与防护体系
  • MySql 知识大汇总
  • 架构实战——架构重构内功心法第三式(运筹帷幄)
  • 行业热点丨仿真历史数据难以使用?如何利用几何深度学习破局,加速汽车工程创新
  • Ubuntu 18.04 repo sync报错:line 0: Bad configuration option: setenv
  • 三维火灾调查重建:科技赋能,探寻真相
  • 网络安全-同形异义字攻击:眼见并非为实(附案例详解)
  • 什么是 MySQL 的慢查询日志?如何优化慢查询?
  • FastAPI docs接口文档打不开怎么解决
  • 活到老学到老之AES加密
  • CentOS 7 上使用 Docker 安装 Jenkins 完整教程
  • 有公网ip还要端口映射不?只有内网ip怎么做映射端口到外网访问?
  • Electron 作品【AI聊天】桌面应用 —— 系列教程(含开源地址)
  • 守护金融核心业务 | 博睿数据《金融业务全景与全链路智能可观测体系建设白皮书》发布!
  • ORACLE基本DML操作
  • ShimetaPi M4-R1:国产高性能嵌入式平台的异构计算架构与OpenHarmony生态实践