如何使用Wasm和Rust来提供多个HTML页面?

时间:2020-03-29 17:08:56

标签: html rust webassembly yew

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

我在客户端使用Yew framework的Rust,到目前为止,我只在客户端使用yew_router处理不同的路由,但是它们都在同一HTML页面和Wasm模块。现在,我希望能够使用单独的Wasm模块为不同的HTML页面提供服务,并且我不确定如何实现这一点。我真的必须为每个页面编写一个专用的板条箱并将它们编译为单独的Wasm模块,以便我可以分别为它们服务吗?还是有某种方法可以将一个防锈板条箱编译为多个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.js中的pkg/,从而建立了client_bg.wasm模块。

现在,我基本上想使用另一个HTML页面,另一个Wasm模块(最好是来自client板条箱中的同一Yew应用程序)来完成此操作。

谢谢

1 个答案:

答案 0 :(得分:2)

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