EasyAdminBlazor项目结构详解:前台Razor Pages + 后台Blazor Server
上篇文章我简单介绍了如何使用EasyAdminBlazor创建一个admin blazor项目。今天拿一个真实项目跑起来的文件夹截图,把每个目录的用途说清楚。
这是用dotnet new easyadmin -n MyProject创建后的完整结构:
EasyAdminBlazorDemo/
├── Connected Services/ # 连接服务(一般用不到)
├── Properties/ # 项目属性
├── wwwroot/ # 静态文件(css、js、图片)
├── 依赖项/ # NuGet包引用
├── Components/ # Blazor组件目录
│ ├── Blog/ # 业务模块示例
│ │ ├── _Article.razor
│ │ ├── _Classify.razor
│ │ ├── _Comment.razor
│ │ └── ArticleEditTemplate.razor
│ ├── Pages/ # Blazor页面
│ │ ├── _Imports.razor
│ │ ├── App.razor
│ │ └── Routes.razor
├── Entities/ # 数据库实体
│ ├── Blog/ # 博客模块实体
│ │ ├── Article.cs
│ │ ├── Classify.cs
│ │ └── Comment.cs
├── Pages/ # Razor Pages目录(前台)
│ ├── Shared/ # 共享布局
│ ├── _ViewImports.cshtml
│ ├── _ViewStart.cshtml
│ └── Index.cshtml # 前台首页
├── appsettings.json # 配置文件
├── dotnet-tools.json # 工具配置
├── easyadminblazor.db # SQLite数据库文件
├── Program.cs # 入口程序
└── README.md # 项目说明
核心架构:前台Razor Pages + 后台Blazor Server
这个项目最值得说的设计是前后台分离但共享同一个项目:
| 模块 | 技术 | 目录 | 说明 |
|---|---|---|---|
| 前台 | Razor Pages | /Pages |
传统MVC模式,SEO友好,首屏加载快 |
| 后台 | Blazor Server | /Components |
交互丰富,开发效率高,不用写JS |
两个互不干扰,但可以共享Entities实体类和服务。
各目录详细说明
Components:后台管理界面
这里是Blazor Server渲染的后台,所有AdminTable页面都放在这。
Components/
├── Blog/ # 按业务模块组织
│ ├── _Article.razor # 文章管理页
│ ├── _Classify.razor # 分类管理页
│ └── _Comment.razor # 评论管理页
└── Pages/
├── App.razor # 根组件
└── Routes.razor # 路由配置
你在后台看到的用户管理、角色管理,都是类似的razor组件。加新模块就在这建文件夹,放AdminTable组件就行。
Entities:数据模型
Entities/
└── Blog/
├── Article.cs # 文章实体
├── Classify.cs # 分类实体
└── Comment.cs # 评论实体
实体类用 FreeSql 的注解,例如 Table、Column。定义好之后,框架会自动帮你建表、同步结构。支持 MySQL、SQLite、SQL Server 等多种数据库。
Pages:前台页面
这是传统的 Razor Pages,适合做面向用户的官网、博客、产品展示页。
Pages/
├── Shared/ # 布局文件
├── _ViewImports.cshtml # 全局using
├── _ViewStart.cshtml # 布局设置
└── Index.cshtml # 首页
前台不需要 SignalR 长连接,用 Razor Pages 更轻量,SEO 也更好。
wwwroot:静态资源
放 css、js、图片、字体。前台的样式和后台的样式都在这。
这样的架构有什么好处?
| 场景 | 用前台(Razor Pages) | 用后台(Blazor Server) |
|---|---|---|
| 官网首页 | ✅ SEO友好 | ❌ 不推荐 |
| 博客文章 | ✅ 加载快 | ❌ 过度设计 |
| 用户管理 | ❌ 交互复杂 | ✅ 开发效率高 |
| 数据报表 | ❌ 要写JS | ✅ 纯C#搞定 |
| 实时看板 | ❌ WebSocket要自己搞 | ✅ SignalR原生支持 |
简单说:给用户看的部分用 Razor Pages,给管理员用的部分用 Blazor Server。
加一个新业务模块的流程
假设你要加一个「产品管理」模块:
- 定义实体:在
Entities/下建Product.cs - 生成后台页面:在
Components/Products/下建_Product.razor,用AdminTable组件 - (可选)加前台展示:在
Pages/Products/Index.cshtml写展示页面
整个过程不用写 API,不用配路由,实体定义好了 CRUD 自动就有了。
下一篇预告
《几十行代码搞定CRUD:AdminTable组件实战》
我会用产品管理这个例子,完整演示怎么用 AdminTable 组件做出一个包含增删改查、筛选、导出Excel的后台页面。
看完你就知道,为什么我说这是接单神器。
EasyAdminBlazor —— 前台Razor Pages + 后台Blazor Server,一套代码搞定两个端
🔗 文档在这儿:https://easyadmim.wang-zhan.com.cn/doc
EasyAdminBlazor —— 我自己接单的屠龙刀,现在也给你用。

浙公网安备 33010602011771号