- 支持试读
内容简介
本章将带你了解本专题的整体内容。 - 支持试读
项目结构
本专题相对复杂,规划好结构非常必要。 前置知识:AXUM中间件
我们曾在《漫游AXUM》专题中讲解过中间件,随着版本迭代,AXUM中间件的机制发生了很大的改变。本章我们将基于当前最新版本的AXUM,讨论各种类型的中间件的实现以及如何在 handler 中,获取中间件里的数据。- 支持试读
前置知识:位运算
你或许有疑问,Web 应用也要位运算?正如你所疑惑的,和底层应用不同,作为高级应用的 Web 应用基本不需要考虑位运算,无论是本章还是后续涉及位运算的章节,都可以用其它数据结构代替。我们之所以会把位运算拿出来给大家介绍,是因为:一、让应用更高效;二、正因为大部分 Web 应用都没用上位运算,所以我们想阐明一件事:对于 Web 应用,位运算也同样能发挥重要作用。 前置知识:PostgreSQL树
我们来讨论 PostgreSQL 维护树的数据结构。由于 PostgreSQL 支持递归查询和递归视图,所以很多模式实现起来都非常方便。本章将讨论使用递归视图,实现《邻接表模式》和《路径枚举模式》结合的树模型。前置知识:PostgreSQL 的继承
你没看错,PostgreSQL 和 OOP 一样,支持继承。惊不惊喜?意不意外?本章我们将学习这一特性。前置知识:PostgreSQL 全文检索
PostgreSQL 不但内置向量/矢量(Vector)数据类型,而且还可以为其维护索引。这为全文检索、AI大模型等场景/领域提供了强力的支持。这方面和 MySQL 提供的只是儿童玩具似的功能相比,简直不是一个维度的降维打击。前置知识:gRPC 拦截器、元数据及身份验证
本章我们将学习 Rust 实现 gRPC 的拦截器、元数据,以便 gRPC 的实现鉴权。趁此机会,回顾一下 Rust 操作 gRPC 的基础知识。新版的 tonic 提供了新的 `builder` ,我们需要使用这个新的 `builder`。
项目结构
- 7401
- 2025-01-19 10:07:26
本专题相对复杂,规划好结构非常必要。
如上文所述,整体看,本专题包含几大部分:
- 分布式商城,我们命名为
plaza - 商城的UI,我们命名为
plaza-ui - 各种所需要的前置知识,我们命名为
knowledge
我们通过一个 plaza 目录组织本专题所需要的所有项目,如下:
商城UI
我们使用 NextJS 来构建 UI,使用的是官方的 create-next-app 命令,并使用 App 路由方式。所以它的结构就是典型的 NextJS 项目结构,具体结构我们到时详解。
经过以上讲解,让我们看一下整个专题大概的目录结构:
├── plaza
│ ├── knowledge
│ │ ├── distributed-lock
│ │ └── sse
│ ├── plaza
│ └── plaza-ui
开发环境
本专题将在 Linux x64 下进行开发,所以涉及到的某些脚本会使用 GNU 工具链和 Bash 脚本。这些工具基本与 MacOS 兼容,对于 Windows 而言,建议像作者一样,使用 WSL2。
专题所需要的一些服务,比如 PostgreSQL,都是使用 docker ,所以请确保你安装了 docker。
Rust 等环境和依赖使用截止本专题开始编写时的最新版本,并在整个专题编写期间保持版本锁定,即不会在编写中途更新任何版本:
- Rust:version 1.92.0 (ded5c06cf 2025-12-08)
- Axum:0.8
- sqlx:0.8
- tokio:1
- serde:1
开发工具和插件
本专题使用 Visual Studio Code 进行开发,为了提高开发效率,将使用以下插件:
- rust-analyzer:使用 VSC 开发 Rust 必备插件,提供自动完成、格式化代码、错误检查等日常开发所需的功能
- Even Better TOML:提供 TOML 支持
- Dependi:依赖管理,提供自动检测项目依赖是否有新版本等功能
- Error Lens:将错误信息直接显示,而不需要移动光标到错误处,再弹出错误信息
- DotEnv:提供
.env支持 - clang-format:格式化 protobuf3 文件
- vscode-proto3:提供 protobuf3 支持
- Prettier:对多种文件进行格式化,尤其是前端相关的文件
- Tailwind CSS IntelliSense:提供 Tailwind CSS 支持。包括自动完成类名,显示类名对应的原生 CSS 等功能
- Codeium:AI 智能助手,根据上下文提供代码补全
- Roo Cline:AI 智能助理,通过 chat 自动生成项目。它是 Cline 的 fork 版本,提供比原版更易用的功能
- REST Client:直接在 VSC 里发起 HTTP 请求,用于 API 测试
源码仓库
本专题代码位于axumrs/plaza仓库,每个涉及代码编写的章节都使用独立的分支。该仓库将公开一段时间,之后将转为私有仓库,请已购买本专题的用户尽快联系我们,提供你的 github 邮箱,我们将把你加入到该仓库中。
