royce
一个用于全栈 Web 应用的极简 Axum + SolidJS 启动模板。
使用预配置的即用型 Docker 部署立即上线。
功能完备,专为高性能打造:
- 前端:细粒度响应式框架
SolidStart - 后端:多线程异步 Rust 后端
Axum - 会话:内存数据库
Redis - 数据库:对象关系数据库
PostgreSQL - 部署:容器虚拟化
Docker
包含所需的一切:
- 身份验证
- 会话
- CORS
- 中间件
- 速率限制
- 响应压缩
- 请求大小限制
- 签名和加密的 Cookie
关于

样式使用 Tailwind CSS 实现,但您可以轻松切换到任何您偏好的解决方案。
前端、后端、数据库和会话存储均作为多容器 Docker Compose 应用程序运行。
用法
- Install Git and Docker.
- Navigate to the directory where you want to clone this repository.
- Run in the terminal:
git clone https://github.com/J-Schoepplenberg/royce.git
cd royce
docker compose up --build
- Navigate in your browser to
http://localhost:8000.
无 Docker 开发
- 安装 rustup、NodeJS 和 PostgreSQL。
- 在您的机器上启动 PostgreSQL 服务器。
docker run -d --name royce-postgres -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password -e POSTGRES_DB=royce -p 5432:5432 -v pgdata:/var/lib/postgresql/data postgres:latest
- 克隆此仓库
git clone https://github.com/J-Schoepplenberg/royce.git。 - 在
royce\backend\src\main.rs中,将会话存储从RedisStore切换为MemoryStore::default()。- 或者,您可以在您的机器上安装 Redis 并启动 Redis 服务器。
docker run -d --name royce-redis -p 6379:6379 redis:latest
- 在
royce\backend中打开一个新的终端并运行cargo run --release。 - 在
royce\frontend中打开一个新的终端并运行npm installnpm run dev。
前端现在将独立于后端运行,并在 http://localhost:3000/ 启用 HMR。
后端将在 http://localhost:8000/api/ 提供服务。
为什么选择 SolidJS?
这个下一代 Web 框架在外观和感觉上与 React 几乎完全相同,但有一个重大区别。与 React 不同,它不会在每次更改时无用地级联重新渲染组件,而是基于信号(signals)。
简而言之,信号存储并更新值以表示状态。但最重要的是,它们是响应式的。这意味着,当它们发生变化时,它们足够智能,能够自动将其最新值传播到所有依赖它们的地方。
在 SolidJS 中,组件等事物是只运行一次且永远不会再次重新渲染的函数。只有信号会被重新计算和更新。这就是为什么 SolidJS 在性能基准测试中远远胜过 React。
为什么选择 Axum?
你已经知道 Rust 的所有优势:零成本抽象、保证的内存安全、与 C/C++ 相同的运行时速度和内存使用量、拥有 Cargo 的卓越生态系统、强大的类型系统。
Axum 使得编写 REST API 变得极其简单,并且由 Tokio 团队本身提供支持,该团队为 Rust 中的异步编程提供了事实上的标准运行时。此外,它基于 hyper,这是现有最快的 HTTP 实现之一。它与 tower 生态系统完全兼容,可以轻松插入任何中间件。通过在路由(= 处理函数中的参数)中添加提取器,您可以极其轻松地提取请求中的内容(例如标头),而无需任何额外工作。