

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
12345# 模块开发(module)67对于一个应用开发,我们应该更加有规划,`cool-admin`提供了模块开发的概念。89建议模块目录`src/modules/模块名`1011```ts12 ├── modules13 │ └── base(基础的权限管理系统)14 │ │ └── controller(api接口, 用法参考 [controller.mdc](mdc:.cursor/rules/controller.mdc) ,必要时需要创建关联查询, 配置pageQueryOp)15 │ │ │ └── admin(后台管理接口)16 │ │ │ └── app(应用接口,如小程序APP等)17 │ │ └── dto(可选,参数校验)18 │ │ └── entity(实体类, 用法参考 [db.mdc](mdc:.cursor/rules/db.mdc) )19 │ │ └── middleware(可选,中间件, 参考 [middleware.code-snippets](mdc:.vscode/middleware.code-snippets) [authority.ts](mdc:src/modules/base/middleware/authority.ts) )20 │ │ └── schedule(可选,定时任务 参考 [task.mdc](mdc:.cursor/rules/task.mdc) )21 │ │ └── service(服务,写业务逻辑,参考 [service.mdc](mdc:.cursor/rules/service.mdc) )22 │ │ └── config.ts(必须,模块的配置)23 │ │ └── db.json(可选,初始化该模块的数据,参考 [db.json](mdc:src/modules/base/db.json) )24 │ │ └── menu.json(可选(7.x新增,配合模块市场使用),初始化该模块的菜单,参考 [menu.json](mdc:src/modules/base/menu.json) )2526```2728创建模块一般需要创建`controller`、`entity`、`service`,29如果entity文件夹没有子文件夹,那么引用BaseEntity是3031 - 引用BaseEntity固定为3233```ts34import { BaseEntity } from '../../modules/base/entity/base';35```3637 错误示例3839```ts40import { BaseEntity } from '../../../modules/base/entity/base';41```4243 多了一个层级4445## 模块配置4647#### config.ts4849```ts50import { ModuleConfig } from '@cool-midway/core';5152/**53 * 模块配置54 */55export default () => {56 return {57 // 必须,模块名称58 name: '聊天模块',59 // 必须,模块描述60 description: '基于socket.io提供即时通讯聊天功能',61 // 可选,中间件,只对本模块有效62 middlewares: [],63 // 可选,全局中间件64 globalMiddlewares: [],65 // 可选,模块加载顺序,默认为0,值越大越优先加载66 order: 1;67 // 其他配置,jwt配置68 jwt: 'IUFHOFNIWI',69 } as ModuleConfig;70};7172```7374::: warning75config.ts 的配置文件是必须的,有几个必填项描述着模块的功能,当然除此之外,你还可以设置模块的一些特有配置76:::7778#### 引入配置7980```ts8182 @Config('module.模块名,模块文件夹名称,如demo')83 config;8485```8687## 数据导入8889在模块中预设要导入的数据,位于`模块/db.json`90911、向`dict_type`表导入数据9293```json94{95 "dict_type": [96 {97 "name": "升级类型",98 "key": "upgradeType"99 }100 ]101}102```1031042、导入有层级的数据,比如`dict_info`表需要先插入`dict_type`拿到`id`,再插入`dict_info`105106```json107{108 "dict_type": [109 {110 "name": "升级类型",111 "key": "upgradeType",112 "@childDatas": {113 "dict_info": [114 {115 "typeId": "@id",116 "name": "安卓",117 "orderNum": 1,118 "remark": null,119 "parentId": null,120 "value": "0"121 },122 {123 "typeId": "@id",124 "name": "IOS",125 "orderNum": 1,126 "remark": null,127 "parentId": null,128 "value": "1"129 }130 ]131 }132 }133 ]134}135```136137`@childDatas`是一个特殊的字段,表示该字段下的数据需要先插入父级表,再插入子级表,`@id`表示父级表的`id`,`@id`是一个特殊的字段,表示插入父级表后,会返回`id`,然后插入子级表138139## 菜单导入140141在模块中预设要导入的菜单,位于`模块/menu.json`,菜单数据可以通过后台管理系统的菜单管理导出,不需要手动编写142143详细参考 [menu.json](mdc:src/modules/base/menu.json)144145```json146[147 {148 "name": "应用管理",149 "router": null,150 "perms": null,151 "type": 0,152 "icon": "icon-app",153 "orderNum": 2,154 "viewPath": null,155 "keepAlive": true,156 "isShow": true,157 "childMenus": [158 {159 "name": "套餐管理",160 "router": "/app/goods",161 "perms": null,162 "type": 1,163 "icon": "icon-goods",164 "orderNum": 0,165 "viewPath": "modules/app/views/goods.vue",166 "keepAlive": true,167 "isShow": true168 }169 ]170 }171]172```173174#### 关闭自动导入175176通过该配置开启自动初始化模块数据库脚本177178```ts179cool: {180 // 是否自动导入数据库181 initDB: false,182 } as CoolConfig,183```184185::: warning186我们不建议在生产环境使用该功能,生产环境是数据库请通过本地导入与同步数据库结构187:::188189#### 重新初始化190191首次启动会初始化模块数据库,初始化完成会在项目根目录生成`.lock`文件,下次启动就不会重复导入,如果需要重新导入,删除该文件夹即可192193```ts194 ├── lock195 │ ├── db196 │ └── base.db.lock(base模块)197 │ └── task.db.lock(task模块)198 │ ├── menu199 │ └── base.menu.lock(base模块)200 │ └── task.menu.lock(task模块)201 │──package.json202```203
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| cool-team-official/cool-admin-midway.cursor/rules/authority.mdc · 3.3k | Cursor rules | security | 54/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/cache.mdc · 3.3k | Cursor rules | no sections | 58/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/controller.mdc · 3.3k | Cursor rules | api | 46/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/db.mdc · 3.3k | Cursor rules | setupdatabase | 62/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/event.mdc · 3.3k | Cursor rules | no sections | 45/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/service.mdc · 3.3k | Cursor rules | database | 54/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/socket.mdc · 3.3k | Cursor rules | no sections | 58/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/task.mdc · 3.3k | Cursor rules | style | 58/100 | today | |
| cool-team-official/cool-admin-midway.cursor/rules/tenant.mdc · 3.3k | Cursor rules | no sections | 50/100 | today | |
| cool-team-official/cool-admin-midway.cursorrules · 3.3k | .cursorrules | no sections | 39/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 14 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 46 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 14 days ago |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/cool-team-official-cool-admin-midway-cursor-rules-module)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.