# express-spring-demo **Repository Path**: WTFSSD/express-spring-demo ## Basic Information - **Project Name**: express-spring-demo - **Description**: 基于 express 模仿 java spring-boot 实现 基本装饰器功能 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-26 - **Last Updated**: 2021-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 模仿spring-boot实现路由系统 ## 注意事项 - 需要在入口文件引入`reflect-metadata` - 需要开启装饰器实验性功能 - 需要在`tsconfig.json` 或 `jsconfig.json`文件中 开启`experimentalDecorators` # `tsconfig.json`文件示例 ```json { "compilerOptions": { "lib": [ "es5", "es6" ], "target": "es5", "module": "commonjs", "moduleResolution": "node", "outDir": "./build", "emitDecoratorMetadata": true, "experimentalDecorators": true, "sourceMap": true, "allowJs": true, } } ``` - 扫描控制器文件夹方法需要在express服务启动前调用 ## 使用示例 ```javascript // 请在入口文件的最开始引入 'reflect-metadata' import 'reflect-metadata' import {Controller,GET,POST,Path,generateRouter} from 'lib/server' var server = {...省略express服务初始化代码} //定义控制器与方法 @Controller('/user') class UserController{ @GET('/list/:id') index(@Params('name') name,@Path('id') id){ return { name, id, code:200 } } } //生成路由 // get /user/list // 扫描控制器文件夹并注册路由 generateRouter(server,'/path/to/controller') // 启动express服务 server.listen(3000, () => console.log('server is running at port ' + 3000 + '...')) ``` ## 访问地址 `http://localhost:3000/user/list/1?name=2233` ## 响应为 ```json { "code":200, "msg":"success", "data":{ "name":"2233", "id":1, "code":200 } } ```