cool-admin-api 开源项目最佳实践教程
1. 项目介绍
cool-admin-api 是一个基于 Egg.js、TypeORM、JWT 等技术封装的 API 开发脚手架。它旨在帮助开发者快速搭建后端服务,提供了一系列的基础设施和工具,使得开发者可以专注于业务逻辑的开发,提高开发效率。该项目支持自动生成数据模型、路由、控制器和服务层代码,简化了开发流程。
2. 项目快速启动
环境准备
- Node.js 版本要求:8.9.0 或以上
- 需要安装 Redis 和 MySQL
克隆项目
使用 Git 克隆项目到本地:
git clone https://github.com/apgzs/cool-admin-api.git
安装依赖
进入项目目录,安装项目依赖:
cd cool-admin-api
yarn
或者使用 npm:
npm install
运行项目
启动项目:
yarn dev
或者使用 npm:
npm run dev
项目启动后,可以通过 http://localhost:7001
访问。
3. 应用案例和最佳实践
数据模型
在 app/entities/*
目录下创建数据模型,例如创建一个 SysRole
角色模型:
import { Entity, Column, Index } from 'typeorm';
import { BaseEntity } from 'egg-cool-entity';
@Entity({ name: 'sys_role' })
export default class SysRole extends BaseEntity {
@Index({ unique: true })
@Column()
name: string;
@Index({ unique: true })
@Column({ nullable: true })
label: string;
@Column({ nullable: true })
remark: string;
}
控制器
创建控制器,例如 SysRoleController
:
import { BaseController } from 'egg-cool-controller';
import { Context } from 'egg';
import { routerDecorator } from 'egg-cool-router';
import { Brackets } from 'typeorm';
@routerDecorator.prefix('/admin/sys/role', ['add', 'delete', 'update', 'info', 'list', 'page'])
export default class SysRoleController extends BaseController {
constructor(ctx: Context) {
super(ctx);
this.setEntity(this.ctx.repo.sys.Role);
this.setPageOption({
keyWordLikeFields: ['name', 'label'],
where: new Brackets(qb => {
qb.where('id != :id', { id: 1 });
}),
});
this.setService(this.service.sys.role);
}
}
服务层缓存
在服务层使用缓存,例如 BusRankService
:
import { BaseService } from 'egg-cool-service';
import { Cache } from 'egg-cool-cache';
@Cache({ ttl: 1000 })
export default class BusRankService extends BaseService {
async rankList() {
return ['程序猿1号', '程序猿2号', '程序猿3号'];
}
}
4. 典型生态项目
- egg-cool-router:用于定义路由,简化路由配置。
- egg-cool-controller:提供基础的控制器功能。
- egg-cool-service:服务层基础类,用于业务逻辑处理。
- egg-cool-cache:缓存注解,用于服务层缓存。
- egg-cool-entity:实体类基础类,用于数据模型定义。
- egg-cool-pay:支付组件,支持多种支付方式。
- egg-cool-es:集成 Elasticsearch 搜索功能。
以上是 cool-admin-api 的最佳实践教程,通过这些实践,开发者可以快速掌握该脚手架的使用方法,高效地开发后端服务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考