2

我正在尝试构建一个在客户端运行 wasm 的 Web 应用程序,我想知道什么是服务多个页面的好方法。我主要关心的是性能,因为我想将应用程序拆分为上下文块,而不是让一个页面包含所有内容。

我在客户端使用带有Yew 框架的 Rust,到目前为止,我只使用yew_router来处理客户端的不同路由,但它们都在同一个 HTML 页面和 Wasm 模块中工作。现在我希望能够使用单独的 Wasm 模块为不同的 HTML 页面提供服务,但我不确定如何实现这一点。我真的必须为每个页面编写一个专用的 crate 并将它们编译为单独的 Wasm 模块,以便我可以单独为它们提供服务吗?或者有什么方法可以将一个 rust crate 编译成多个 Wasm 模块?

我当前的项目结构如下所示:

.
├── Cargo.toml // workspace manifest
├── client
│   ├── Cargo.toml
│   ├── favicon.ico
│   ├── index.html
│   ├── main.js
│   ├── Makefile
│   ├── pkg // built using wasm-pack and rollup
│   │  ├── bundle.js
│   │  ├── client_bg.d.ts
│   │  ├── client_bg.wasm
│   │  ├── client.d.ts
│   │  ├── client.js
│   │  ├── package.json
│   │  └── snippets
│   ├── src
│   ├── statics
│   ├── styles
│   └── vendor
├── server
│   ├── Cargo.toml
│   └── src
└── ... other crates

我在里面运行服务器client/,它响应index.html任何传入的GET请求。设置模块的index.html链接bundle.jspkg/client_bg.wasm

现在我基本上想用另一个 HTML 页面和另一个 Wasm 模块来做这件事,最好是来自clientcrate 中的同一个 Yew App。

谢谢

4

1 回答 1

2

目前不可能从一个 crate 生成两个 wasm 文件。解决方案是使用每个 wasm 文件创建一个,然后让另一个构建系统将输出放置到正确的位置。

于 2020-03-30T06:29:13.863 回答