# node-servers **Repository Path**: zhudunfeng/node-servers ## Basic Information - **Project Name**: node-servers - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-02 - **Last Updated**: 2026-01-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # node-servers 基于 Express 和 TypeScript 的后端应用框架,通过装饰器和 IoC 容器实现了类似 Spring MVC 的开发体验。 ## 核心特性 - **装饰器驱动**: 使用 TypeScript 装饰器(`@RestController`, `@GetMapping`, `@Autowired` 等)自动注册路由和管理依赖,无需手动编写繁琐的路由配置。 - **依赖注入 (IoC)**: 内置轻量级 IoC 容器,自动管理 Bean(控制器、服务等)的实例化、依赖关系注入(`@Autowired`)和作用域(单例)。 - **拦截器机制**: 提供 `HandlerInterceptor` 和拦截器注册功能,支持对请求进行预处理、后处理和最终处理。 - **事件发布与订阅**: 实现 `ApplicationEventMulticaster`,支持自定义事件和监听器。 - **文件上传支持**: 集成 `multer`,开箱即用的文件上传下载功能。 ## 技术栈 - **运行时**: Node.js - **语言**: TypeScript - **Web 框架**: Express - **其他依赖**: multer (文件处理), dotenv (环境变量) ## 项目结构 ``` src/ ├── controller/ # 控制器层,处理 HTTP 请求 │ ├── HelloController.ts │ ├── Hello2Controller.ts │ └── FileController.ts ├── service/ # 服务层,处理业务逻辑 │ ├── TestService.ts │ └── FileService.ts ├── ioc.ts # IoC 容器核心实现 ├── decorator.ts # 路由映射和依赖注入装饰器定义 ├── ApplicationEventMulticaster.ts # 事件发布与订阅机制 ├── types.ts # 类型定义 └── app.ts # 应用入口 ``` ## 快速开始 ### 环境要求 - Node.js - npm 或 yarn ### 安装依赖 ```bash npm install ``` ### 开发模式 使用 `ts-node` 直接运行(需全局安装 `ts-node`): ```bash npx ts-node src/app.ts ``` 或者启动开发服务器(支持热重载,通常配合 `nodemon` 使用): ```bash # 需确保已配置 nodemon 或类似工具 nodemon src/app.ts ``` ### 构建与生产运行 1. **构建 TypeScript** ```bash npm run build ``` 编译后的文件位于 `dist/` 目录。 2. **启动生产服务** ```bash node ./dist/app.js ``` ## 使用示例 ### 定义控制器 ```typescript import { RestController, GetMapping, Autowired } from './decorator'; import { UserService } from './service/UserService'; @RestController("/users") export class UserController { @Autowired() private userService: UserService; @GetMapping("/:id") public getUser(@PathVariable("id") id: string) { return this.userService.getUser(id); } } ``` ### 定义服务 ```typescript import { Component } from './ioc'; @Component() export class UserService { public getUser(id: string) { return { id, name: "Test User" }; } } ``` ## 部署 ### Docker 项目提供了 `Dockerfile`,支持容器化部署。 1. 构建镜像: ```bash docker build -t node-servers . ``` 2. 运行容器: ```bash docker run -p 3004:3004 -v $(pwd)/uploads:/usr/src/app/uploads node-servers ``` ### docker-compose 项目提供了 `docker-compose.yaml`,可一键启动: ```bash docker-compose up --build ``` ## API 参考 ### 核心装饰器 - `@Controller` / `@RestController`: 标记类为控制器。 - `@GetMapping`, `@PostMapping`, `@PutMapping`, `@DeleteMapping`: 定义路由和方法。 - `@RequestParam`, `@PathVariable`: 提取请求参数。 - `@Component`: 标记为 Spring Bean。 - `@Autowired`: 自动注入依赖。 ### 拦截器 可通过实现 `HandlerInterceptor` 接口并使用 `@Component` 注册来添加拦截逻辑。 ## License 本项目基于 [MIT License](LICENSE) 开源。