go-frame-best-practices
npx skills add https://github.com/iceleaf916/my-cc-plugins --skill go-frame-best-practices
Agent 安装分布
Skill 文档
GoFrame æ¡æ¶å¼åæä½³å®è·µ
æä¾ GoFrame æ¡æ¶ç宿¹æä½³å®è·µæå¯¼ï¼å æ¬é¡¹ç®ç»æãå屿¶æãé 置管çãæ°æ®æ ¡éªãæ°æ®åºæä½ãä¸é´ä»¶å¼åçå¼åè§èã
è§¦åæ¡ä»¶
å½ç¨æ·è¯¢é®ä»¥ä¸é®é¢æ¶ï¼æ¤ Skill ä¼è¢«è§¦åï¼
- go-frame æä½³å®è·µ
- go-frame å¼åè§è
- go-frame 项ç®ç»æ
- go-frame å屿¶æ
- go-frame è·¯ç±æ³¨å
- go-frame æ°æ®åºæä½
- go-frame äºå¡å¤ç
- go-frame é 置管ç
- go-frame ä¸é´ä»¶
- go-frame API ææ¡£
- go-frame æ ¡éªåæ°
æ ¸å¿å 容
æ¤ Skill æä¾ GoFrame æ¡æ¶å¼åçæ ¸å¿æå¯¼ååã详ç»å å®¹å æ¬é¡¹ç®ç®å½ç»æãå屿¶æè®¾è®¡ãé 置管çãæ°æ®æ ¡éªãæ°æ®åº CRUD æä½ãäºå¡å¤çãä¸é´ä»¶å¼åãæ¥å¿ç®¡çãAPI ææ¡£çæçã
项ç®ç®å½ç»æ
GoFrame 宿¹æ¨èçæ åç®å½ç»æå¦ä¸ï¼
âââ api # API æ¥å£å®ä¹å±
â âââ user # ææ¨¡ååå
â âââ v1 # çæ¬å·
â âââ user.go # æ¥å£å®ä¹æä»¶
âââ internal
â âââ cmd # å½ä»¤è¡å¯å¨å
¥å£
â â âââ cmd.go # æå¡å¯å¨å½ä»¤
â âââ controller # æ§å¶å¨å±ï¼è¯·æ±æ¥æ¶ï¼
â â âââ user # ææ¨¡ååå
â â âââ user.go
â âââ logic # ä¸å¡é»è¾å±ï¼æ ¸å¿ï¼
â â âââ user
â â âââ user.go
â âââ model # æ°æ®æ¨¡åå±
â â âââ entity.go # æ°æ®åºå®ä½
â â âââ do.go # æ°æ®å¯¹è±¡
â âââ service # æå¡å±
âââ manifest # é¨ç½²é
ç½®
â âââ config # é
ç½®æä»¶
â âââ docker # Docker é
ç½®
âââ go.mod
âââ main.go
å ³é®ååï¼
internalç®å½ä¸çå åªè½è¢«æ¬é¡¹ç®å¯¼å ¥ï¼ç¡®ä¿å é¨é»è¾ä¸å¯¹å¤æ´é²- 使ç¨
apiå®ä¹æ¥å£å¥çº¦ï¼internalå®ç°å ·ä½é»è¾ cmdç®å½ä¸ç®¡çæå¡å¯å¨å½ä»¤
å屿¶æè®¾è®¡
GoFrame éç¨ç»å ¸çä¸å±ï¼æåå±ï¼æ¶æè®¾è®¡ï¼
-
Controller å±ï¼è´è´£æ¥æ¶è¯·æ±ãåæ°æ ¡éªï¼è°ç¨ Logic å±å¤çä¸å¡é»è¾ãController å±ä¿æè½»éï¼åªå请æ±è½¬åï¼ä½¿ç¨ä¾èµæ³¨å ¥æ¹å¼æ³¨å ¥ Logic å±ã
-
Logic å±ï¼æ¯æ ¸å¿ä¸å¡å¤çåå ï¼è´è´£å ·ä½çä¸å¡è§åå®ç°ãäºå¡å¤çå¨ Logic å±è¿è¡ï¼ä¿æ Controller å Logic çååä¾èµã
-
Model å±ï¼å®ä¹æ°æ®ç»æï¼å æ¬å®ä½åæ°æ®ä¼ è¾å¯¹è±¡ã使ç¨
dc:tag æ·»å åæ®µæè¿°ç¨äº API ææ¡£ã
é 置管ç
GoFrame ä½¿ç¨ g.Cfg() åä¾ç®¡çé
ç½®ï¼æ¯æå¤ç§é
ç½®æä»¶æ ¼å¼ï¼toml/yaml/yml/json/ini/xml/propertiesï¼ãé
ç½®é¡¹æ¯æå±çº§è®¿é®ï¼ä½¿ç¨ . åéï¼ã
æ°æ®æ ¡éª
ä½¿ç¨ v:"è§å#é误信æ¯" æ ¼å¼å®ä¹æ ¡éªè§åï¼ä½¿ç¨ p: tag å®ä¹åæ°åï¼ä½¿ç¨ dc: tag æ·»å åæ®µæè¿°ãä½¿ç¨ g.Validator() è¿è¡åæ°æ ¡éªã
æ°æ®åºæä½
åºç¡ CRUD æä½ä½¿ç¨ g.DB().Model() æ¹æ³ï¼äºå¡å¤çä½¿ç¨ Transaction() æ TransactionWithOptions() æ¹æ³ãæ ¹æ®ä¸å¡åºæ¯éæ©åéçé离级å«ã
ä¸é´ä»¶å¼å
ä¸é´ä»¶ä½¿ç¨ r.Middleware.Next() æ§è¡åç»é»è¾ï¼é误å¤çä¸é´ä»¶æ¾å¨æåãéµå¾ªèè´£åä¸ååã
API ææ¡£çæ
ä½¿ç¨ s.SetOpenApiPath() å s.SetSwaggerPath() å¯ç¨ Swagger ææ¡£ãä½¿ç¨ g.Meta å®ä¹æ¥å£å
ä¿¡æ¯ï¼ä½¿ç¨ dc: tag æè¿°å段å«ä¹ã
åèèµæº
详ç»å 容å代ç 示ä¾è¯·åè以䏿件ï¼
references/project-structure.md– 项ç®ç®å½ç»æè¯¦è§£references/layered-architecture.md– å屿¶æè®¾è®¡æ¨¡å¼references/configuration.md– é 置管çæä½³å®è·µreferences/database.md– æ°æ®åºæä½åäºå¡å¤çreferences/middleware.md– ä¸é´ä»¶å¼åæåexamples/controller-example.go– Controller å±ç¤ºä¾ä»£ç examples/logic-example.go– Logic å±ç¤ºä¾ä»£ç examples/middleware-example.go– ä¸é´ä»¶ç¤ºä¾ä»£ç
常ç¨å½ä»¤
| å½ä»¤ | 说æ |
|---|---|
gf run main.go |
å¿«éè¿è¡é¡¹ç® |
gf gen ctrl |
çæ Controller |
gf gen service |
çæ Service |
gf gen pb |
çæ Protobuf æä»¶ |