|  119a9ff88c 
		
			Some checks failed
		
		
	 continuous-integration/drone/push Build is failing - 移除了多余的空行 - 在 docker run 命令中添加了 --network 参数,指定使用 tycm-server_test-network 网络 - 删除了不必要的 plugins/docker 镜像引用 | ||
|---|---|---|
| .vscode | ||
| chromaDB | ||
| lock | ||
| public | ||
| src | ||
| test | ||
| view | ||
| .dockerignore | ||
| .drone.yml | ||
| .editorconfig | ||
| .eslintrc.json | ||
| .gitattributes | ||
| .gitignore | ||
| .hintrc | ||
| .prettierrc.js | ||
| bootstrap.js | ||
| docker-compose.yml | ||
| Dockerfile | ||
| jest.config.js | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
cool-admin(midway版)一个很酷的后台权限管理系统,开源免费,模块化、插件化、极速开发CRUD,方便快速构建迭代后台管理系统,支持serverless、docker、普通服务器等多种方式部署 到 官网 进一步了解。
技术栈
- 后端:node.jsmidway.jskoa.jstypescript
- 前端:vue.jselement-plusjsxpiniavue-router
- 数据库:mysqlpostgresqlsqlite
如果你是前端,后端的这些技术选型对你是特别友好的,前端开发者可以较快速地上手。 如果你是后端,Typescript 的语法又跟 java、php 等特别类似,一切看起来也是那么得熟悉。
如果你想使用java版本后端,请移步cool-admin-java
官网
演示
- 账户:admin
- 密码:123456

项目前端
https://github.com/cool-team-official/cool-admin-vue
微信群

运行
修改数据库配置,配置文件位于src/config/config.local.ts
以Mysql为例,其他数据库请参考数据库配置文档
Mysql(>=5.7版本),建议 8.0,node 版本(>=16.x),建议 18.x,首次启动会自动初始化并导入数据
// mysql,驱动已经内置,无需安装
typeorm: {
    dataSource: {
      default: {
        type: 'mysql',
        host: '127.0.0.1',
        port: 3306,
        username: 'root',
        password: '123456',
        database: 'cool',
        // 自动建表 注意:线上部署的时候不要使用,有可能导致数据丢失
        synchronize: true,
        // 打印日志
        logging: false,
        // 字符集
        charset: 'utf8mb4',
        // 是否开启缓存
        cache: true,
        // 实体路径
        entities: ['**/modules/*/entity'],
      },
    },
  },
安装依赖并运行
$ npm i
$ npm run dev
$ open http://localhost:8001/
注: npm i如果安装失败可以尝试使用cnpm,或者切换您的镜像源,推荐使用pnpm
CURD(快速增删改查)
大部分的后台管理系统,或者 API 服务都是对数据进行管理,所以可以看到大量的 CRUD 场景(增删改查),cool-admin 对此进行了大量地封装,让这块的编码量变得极其地少。
新建一个数据表
src/modules/demo/entity/goods.ts,项目启动数据库会自动创建该表,无需手动创建
import { BaseEntity } from '@cool-midway/core';
import { Column, Entity, Index } from 'typeorm';
/**
 * 商品
 */
@Entity('demo_app_goods')
export class DemoAppGoodsEntity extends BaseEntity {
  @Column({ comment: '标题' })
  title: string;
  @Column({ comment: '图片' })
  pic: string;
  @Column({ comment: '价格', type: 'decimal', precision: 5, scale: 2 })
  price: number;
}
编写 api 接口
src/modules/demo/controller/app/goods.ts,快速编写 6 个 api 接口
import { CoolController, BaseController } from '@cool-midway/core';
import { DemoAppGoodsEntity } from '../../entity/goods';
/**
 * 商品
 */
@CoolController({
  api: ['add', 'delete', 'update', 'info', 'list', 'page'],
  entity: DemoAppGoodsEntity,
})
export class DemoAppGoodsController extends BaseController {
  /**
   * 其他接口
   */
  @Get('/other')
  async other() {
    return this.ok('hello, cool-admin!!!');
  }
}
这样我们就完成了 6 个接口的编写,对应的接口如下:
- POST /app/demo/goods/add新增
- POST /app/demo/goods/delete删除
- POST /app/demo/goods/update更新
- GET /app/demo/goods/info单个信息
- POST /app/demo/goods/list列表信息
- POST /app/demo/goods/page分页查询(包含模糊查询、字段全匹配等)
部署
内置指令
- 使用 npm run lint来做代码风格检查。
