Mix Space æ ¸å¿ƒæœåŠ¡ï¼›åŸºäºŽ
nestjs
(nodejs),需安装mongoDB
å’ŒRedis
æ–¹å¯å®Œæ•´è¿è¡Œã€‚
v3 还是使用
nestjs
è¿›è¡Œé‡æž„,之å‰çš„版本在 æ¤ä»“库。
æ¤é¡¹ç›®ä¸å¸¦ä¸»ç«™ï¼Œå¯ä»¥ä½¿ç”¨ä»¥ä¸‹é¡¹ç›®ï¼ˆé€‰ä¸€ï¼‰è¿›è¡Œéƒ¨ç½²ã€‚
æŽ¥å£æ–‡æ¡£é€šè¿‡å¼€å‘环境 Swagger 查阅。
çŽ°æœ‰çš„æ¯”è¾ƒæœ‰æ„æ€çš„一些å°çŽ©æ„的实现:
- 实时日志输出。通过 Socket.IO + 劫æŒ
process.stdout
实现。 - PTY 支æŒã€‚
- 云函数
cd
mkdir -p mx/server
cd mx/server
wget https://fastly.jsdelivr.net/gh/mx-space/mx-server@master/docker-compose.yml
docker-compose up -d
需è¦ä»¥ä¸‹çŽ¯å¢ƒï¼š
- Node.js 16.10+
- MongoDB
- Redis
现有 macOS(x86)ã€Linux(x86) 的已构建产物。使用以下脚本å¯å…手动构建直接è¿è¡Œã€‚
curl https://cdn.jsdelivr.net/gh/mx-space/mx-server@master/scripts/download-latest-asset.js >> download.js
zx ./download.js
cd mx-server
node index.js
或者手动下载 release,之åŽè§£åŽ‹ç„¶åŽ
node index.js
所有的ä¾èµ–éƒ½æ‰“åŒ…è¿›äº†äº§ç‰©ï¼Œæ— éœ€é»‘æ´žä¸€èˆ¬çš„ node_modules
git clone https://github.com/mx-space/mx-server
cd mx-server
pnpm i
pnpm dev
.
├── app.config.ts # 主程åºé…置,数æ®åº“ã€ç¨‹åºã€ç¬¬ä¸‰æ–¹ï¼Œä¸€åˆ‡å¯é…置项
├── app.controller.ts # ä¸»ç¨‹åºæ ¹æŽ§åˆ¶å™¨
├── app.module.ts # ä¸»ç¨‹åºæ ¹æ¨¡å—,负责å„业务模å—çš„èšåˆ
├── common # å˜æ”¾ä¸é—´ä»¶
│ ├── adapters # Fastify 适é…器的é…ç½®
│ ├── decorator # 业务装饰器
│ ├── exceptions # 自定义异常
│ ├── filters # 异常处ç†å™¨
│ ├── guard # 守å«ä¸Žé‰´æƒ
│ ├── interceptors # 拦截器, æ•°æ®è¿‡æ»¤ä¸Žå“åº”æ ¼å¼åŒ–处ç†
│ ├── middlewares # ä¼ ç»Ÿæ„义上的ä¸é—´ä»¶
│ └── pipes # 管é“
├── constants # 常é‡
├── main.ts # 引入é…置,å¯åŠ¨ä¸»ç¨‹åºï¼Œå¼•å…¥å„ç§å…¨å±€æœåŠ¡
├── modules # 业务逻辑模å—
├── processors # æ ¸å¿ƒè¾…åŠ©æ¨¡å—
│ ├── cache # Redis 缓å˜ç›¸å…³
│ ├── database # Mongo æ•°æ®åº“相关
│ ├── gateway # Socket.IO 相关
│ ├── helper # 辅助类
│ └── logger # 自定义 Logger
├── shared # 通用模型
│ ├── dto # æ•°æ®éªŒè¯æ¨¡åž‹
│ ├── interface # 接å£
│ └── model # åŸºæœ¬æ•°æ®æ¨¡åž‹
├── utils # 工具类
└── zx.global.ts
-
è¯·æ±‚å¤„ç†æµç¨‹
- request:收到请求
- middleware:ä¸é—´ä»¶è¿‡æ»¤çˆ¬è™« PHP 肉鸡扫æè·¯å¾„,记录访问历å²
- guard:守å«è¿‡æ»¤ï¼ˆé‰´æƒï¼‰å’Œè§’色附åŠ
- interceptor:before:åªç”¨äºŽ DEBUG 请求计时
- pipeï¼šæ ¡éªŒè¯·æ±‚æ•°æ®ï¼Œè¿‡æ»¤æœªçŸ¥æ•°æ®ï¼Œéžæ³•类型抛错 422
- controller & resolver:业务控制器
- service:业务æœåŠ¡
- interceptor:afterï¼šæ•°æ®æµæ 6DA7 ‹¦æˆªå™¨ï¼ˆæ ¼å¼åŒ–æ•°æ®ï¼‰ã€è¯·æ±‚缓å˜
- filter:æ•获以上所有æµç¨‹ä¸å‡ºçŽ°çš„å¼‚å¸¸ï¼Œå¦‚æžœä»»ä½•ä¸€ä¸ªçŽ¯èŠ‚æŠ›å‡ºå¼‚å¸¸ï¼Œåˆ™è¿”å›žé”™è¯¯
-
拦截器æµå‘
ResponseInterceptor -> ResponseFilterInterceptor -> JSONTransformInterceptor -> CountingInterceptor -> AnalyzeInterceptor -> HttpCacheInterceptor
-
- [Aggregate] èšåˆ
- [Analyze] æ•°æ®ç»Ÿè®¡
- [Auth] 认è¯
- [Backup] 备份
- [Category] 分类
- [Commnet] 评论
- [Configs] 读å–é…置项
- [Feed] RSS
- [Health] 应用å¥åº·æ£€æŸ¥ä¸Žæ—¥å¿—相关
- [Init] åˆå§‹åŒ–相关
- [Link] å‹é“¾
- [Markdown] Markdown è§£æžå¯¼å…¥å¯¼å‡ºè§£æžç›¸å…³
- [Note] 日记
- [Option] 设置
- [Page] 独立页é¢
- [PageProxy] å代管ç†é¡µ
- [Post] åšæ–‡
- [Project] 项目
- [Recently] 最近
- [Say] 说说
- [Search] æœç´¢
- [Sitemap] 站点地图
- [User] 用户
-
- [cache] Redis 缓å˜ç›¸å…³
- [database] æ•°æ®åº“相关
- [gateway] Socket.IO 相关
- 用户端
- 管ç†ç«¯
- 实时通知
- [helper] 辅助类
- [CountingService] æä¾›æ›´æ–°é˜…读计数
- [CronService] 维护管ç†è®¡åˆ’任务
- 自动备份
- 推é€ç™¾åº¦æœç´¢
- 清除缓å˜
- etc.
- [EmailService] é€ä¿¡æœåŠ¡
- [HttpService] 请求模å—
- [ImageService] 图片处ç†
- [TqService] 任务队列
- [UploadService] ä¸Šä¼ æœåŠ¡
- [AssetService] èŽ·å–æœ¬åœ°èµ„æºæœåŠ¡
- [TextMacroService] æ–‡æœ¬å®æ›¿æ¢æœåŠ¡
- [JWTService] JWT æœåŠ¡
- [BarkPushService] Bark Push æœåŠ¡
pnpm i
pnpm start
项目å‚考了 nodepress
Since 2021-08-31
Thanks
This project is licensed under AGPLv3 licensed. 2021 Innei