EasyAdminBlazor项目结构详解:前台Razor Pages + 后台Blazor Server

原创 2026-05-27 728 次阅读

上篇文章我简单介绍了如何使用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 的注解,例如 TableColumn。定义好之后,框架会自动帮你建表、同步结构。支持 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。

加一个新业务模块的流程

假设你要加一个「产品管理」模块:

  1. 定义实体:在 Entities/ 下建 Product.cs
  2. 生成后台页面:在 Components/Products/ 下建 _Product.razor,用 AdminTable 组件
  3. (可选)加前台展示:在 Pages/Products/Index.cshtml 写展示页面

整个过程不用写 API,不用配路由,实体定义好了 CRUD 自动就有了。

下一篇预告

《几十行代码搞定CRUD:AdminTable组件实战》

我会用产品管理这个例子,完整演示怎么用 AdminTable 组件做出一个包含增删改查、筛选、导出Excel的后台页面。

看完你就知道,为什么我说这是接单神器。


🔗 文档https://easyadmim.wang-zhan.com.cn/doc
🔗 源码https://gitee.com/gudufy/EasyAdminBlazor


EasyAdminBlazor —— 我自己接单的屠龙刀,现在也给你用。