Files
easygoadmin-wiki/EasyGoAdmin_Beego_Layui/zh/why.md
T
2026-10-20 21:19:44 +08:00

222 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 1.2 为什么选择我们
## 声明式 CRUD,开发效率倍增
项目最大的特点是声明式 CRUD 架构。只需在数据库中建好表,通过代码生成器即可一键生成完整的前后端 CRUD 模块:
```bash
# 通过 Web 界面操作,选择表 → 配置 → 生成
# 或通过命令行
php think generate:code think_example
```
生成器会自动完成:
- **后端代码**:Model、Validate、Logic、Controller 全套文件
- **前端页面**:列表页、编辑弹窗、详情弹窗
- **API 接口**:前端 TypeScript API 模块
- **菜单权限**:自动插入菜单记录和权限节点
- **路由注册**:自动将新模块接入主路由
一个标准 CRUD 模块从手写到调试通常需要 1-2 天,使用生成器只需几分钟。
## 完整的 RBAC 权限体系
系统内置了企业级的基于角色的访问控制:
- **用户管理**:用户增删改查、重置密码、角色分配
- **角色管理**:角色增删改查、菜单权限分配
- **菜单管理**:菜单树形结构、权限节点定义
- **部门管理**:组织架构树形管理
- **权限粒度**:精确到每个操作(`sys:user:add`、`sys:user:delete` 等)
- **超级管理员**:用户 ID=1 自动拥有所有权限,无需额外配置
前端通过 `v-perm` 指令自动控制按钮的显示和隐藏,与后端权限保持一致。
## 声明式 ThinkPHP 架构
项目遵循 ThinkPHP 最佳实践,代码结构清晰。以 `app/logic/ExampleLogic.php` 为例:
```php
// 逻辑层只需声明属性配置,无需编写 CRUD 代码
class ExampleLogic extends BaseLogic
{
/**
* 关联的模型类
*
* @var string
*/
protected string $modelClass = Example::class;
/**
* LIKE 模糊匹配字段
*
* @var array
*/
protected array $pageLikeFields = ['name'];
/**
* 精确匹配字段
*
* @var array
*/
protected array $pageEqFields = ['status'];
/**
* 默认排序规则
*
* @var array
*/
protected array $pageOrderBy = ['field' => 'sort', 'type' => 'asc'];
/**
* 唯一性校验字段
*
* @var array
*/
protected array $uniqueFields = ['name'];
/**
* 枚举显示名映射
*
* @var array
*/
protected array $serializeMaps = ['status' => 'example_status'];
/**
* 删除前处理:业务约束校验
*
* @param int $id 记录 ID
* @return void
*/
protected function beforeDelete(int $id): void
{
// 删除前校验
}
}
```
控制器只需调用通用方法:
```php
class ExampleController extends BaseController
{
protected ExampleLogic $logic;
protected function initialize(): void
{
$this->logic = new ExampleLogic();
}
#[Log('案例演示-查询分页', Log::TYPE_QUERY)]
#[Permission('sys:example:page', '案例分页')]
public function page(): Json
{
return parent::_index($this->logic); // 一行搞定分页查询
}
}
```
所有模块遵循相同的分层模式,新成员上手快,代码可维护性强。
## 丰富的内置模块
系统预置了 20+ 个常用业务模块,开箱即用:
- **系统管理**:用户、角色、菜单、部门、职级、岗位、租户
- **系统配置**:字典管理、系统配置、参数管理
- **内容管理**:文章管理、分类管理、公告管理、友情链接
- **系统监控**:登录日志、操作日志、定时任务
- **开发工具**:代码生成器、文件上传、示例模块
这些模块不仅可以直接使用,也是学习本框架开发模式的最佳参考。
## Vue3 + ElementPlus 前端
前端采用主流技术栈,开发体验优秀:
- **Vue3 Composition API**:更灵活的组件逻辑组织
- **TypeScript**:类型安全,减少运行时错误
- **ElementPlus**:成熟的企业级 UI 组件库
- **Pinia**:轻量级状态管理
- **Vite**:极速的开发服务器和构建工具
- **动态路由**:菜单和路由由后端驱动,前端无需硬编码
前端开发常用命令:
```bash
cd ui
pnpm install # 安装依赖
pnpm dev # 启动开发服务器 (http://localhost:8001)
pnpm build # 生产环境构建
```
## 开箱即用的开发体验
从获取源码到运行项目,只需几步:
```bash
# 1. 从官方网站下载源码包并解压
cd RXThinkCMF_ThinkPhp8_EleVue
# 2. 安装依赖
composer install
# 3. 配置 .env(数据库、JWT 密钥)
# 4. 导入数据库
mysql -u root -proot rxthinkcmf.thinkphp8.elevue < document/mysql/rxthinkcmf.thinkphp8.elevue.sql
# 5. 启动后端
php think run
# 6. 启动前端
cd ui && pnpm install && pnpm dev
```
访问 `http://localhost:8001` 即可使用。默认超级管理员账号 `admin / 123456` 可直接登录。
## 多数据库支持
通过环境变量一键切换五种数据库:
```ini
; .env
[DATABASE]
TYPE = mysql ; MySQL(默认)
TYPE = pgsql ; PostgreSQL
TYPE = sqlsrv ; SQL Server
TYPE = oracle ; Oracle
TYPE = sqlite ; SQLite
```
业务代码零修改,ORM 自动处理 SQL 差异。
## 多租户与数据权限
内置企业级多租户隔离体系:
- **租户隔离**:通过 `BaseTenantLogic` 基类自动处理 `tenant_id` 过滤与填充
- **数据权限**:支持全部数据 / 本部门数据 / 仅本人数据三种范围
- **超级管理员**:`tenant_id=0` 的用户不受租户隔离限制,创建数据时自动代入默认租户
## 持续更新
项目持续迭代,紧跟技术发展:
- ThinkPHP 版本持续升级至 6.1.x
- PHP 版本要求 8.2+
- 前端从 Vue 2 升级到 Vue3 + ElementPlus
- 代码生成器功能不断增强
- 安全机制持续完善
## 适用场景
项目适合以下场景:
- 企业内部管理系统(ERP、CRM、OA 等)
- 内容管理系统(CMS)
- 数据管理后台
- SaaS 多租户平台
- 快速原型开发
- 学习 ThinkPHP + Vue 全栈开发