#web-apps #web #wasm #app

bin+lib webapp-backend

完全用 Rust 编写的 Web 应用程序

1 个稳定版本

1.0.0 2019年7月5日

#18 in #app

MIT 许可证

275KB
595

WebApp.rs

CircleCI Coverage Docs master Docs release Docs release backend Docs release frontend License MIT Crates.io Crates.io Crates.io

完全用 Rust 编写的 Web 应用程序

本项目的目标是使用 Rust 编写一个完整的 Web 应用程序,包括后端和前端。

Rust wasm             Rust app
in browser <- REST -> HTTP Server -- actix-web
 |                         |
Yew                   Diesel (ORM) -> PostgreSQL

博客文章

  1. 完全用 Rust 编写的 Web 应用程序.
  2. 在完全用 Rust 编写 Web 应用程序时学到的经验教训.

构建

为了支持此应用程序的完整功能集,以下构建依赖项需要满足

应用程序由前端和后端组成。为了开始进行开发,可以通过 make run-backend 测试后端,而前端可以通过 make run-frontend 进行测试。如需调整应用程序配置,可以在 Config.toml 中进行。

此命令在 Ubuntu 或 Debian 上安装构建需求、rust 和 wasm-pack。

> sudo apt-get update
> sudo apt-get install -y pkg-config libssl-dev npm sudo wget
> wget https://sh.rustup.rs -O rustup-init
> sudo sh rustup-init -y
> cargo install wasm-pack
> sudo npm install -g rollup

此命令构建项目。

> git clone https://github.com/saschagrunert/webapp.rs.git
> cd webapp.rs
> make all

运行

make deploy 使用 podman 启动一个 PostgreSQL 容器和 Rust 后端容器。如果您想使用 docker 代替 podman,请在 CONTAINER_RUNTIME=docker 中设置 Makefile 的顶部。如需设置后端 URL 和 PostgreSQL 凭据,请根据需要编辑 Config.toml

[server]
url = "http://127.0.0.1:30080"
...
[postgres]
host = "127.0.0.1"
username = "username"
password = ""
database = "database"

确保已安装运行时依赖项,然后启动两个容器。

> sudo apt install -y postgresql-client
> cargo install diesel_cli --no-default-features --features "postgres"
> sudo make deploy

现在应用程序应在 http://127.0.0.1:30080 可用。在开发过程中,您可以使用 make run-app 只启动 rust 后端容器,使用 run-postgres 只启动 PostgreSQL 容器来分别启动容器。

如果后端和前端都在运行,您可以在 http://127.0.0.1:30080 访问 Web 应用程序。在应用程序成功加载后,您应该看到一个类似于这样的认证屏幕

authentication screen

登录界面将接受任何相同的用户名和密码,例如 me(用户名)和 me(密码)。目前还没有进一步的用户认证,但不匹配的组合将导致认证失败。登录成功后,你应该能够看到应用程序的内容。

content screen

认证应该持续存在,即使在手动刷新页面后也更好。通过注销按钮注销应用程序也应按预期工作。

控制流程

应用程序的完整控制流程如下

control screen

贡献

你想为这个项目做出贡献吗?太好了,谢谢!所以请fork它并给我发送一个pull request。


lib.rs:

后端库

依赖项

~33–44MB
~1M SLoC