目前是一个玩具型 TypeScript + Koa 2 后端API快速开发模版
借助TypeScript的装饰器(decorators), 可以实现类似Java语言的 注解(annotation), 借此来实现类似Spring的自动扫包 / 依赖注入。
同时,egg / midway等框架虽功能完善,但对初学者研究核心实现不太友好;依赖过多第三方库,导致风险不可控。
故,自造此玩具模版。将来会把核心功能抽出,单独成为一个npm包。
持续完善中。欢迎贡献代码,一起玩耍。
开源不难,难的是持续维护
- TypeScript + Koa 2
- 自动扫描routes目录下的类, 自动挂载如
@Controller('/modulePath')
(类装饰器)和@Post('/methodPath')
(方法装饰器)上的路由。@Autowired
装饰器,不必写constructor,不必new, 参见routes/test.ts
中的testService
。- 无ORM,使用knex操作数据库
- 使用PostGraphile,自动生成PostgreSQL数据库内的接口
- 配置文件支持,.env为主配置文件 / conf路径下为生产/开发环境中的配置文件,会覆盖.env中的配置项
- Node.js v10.x 版本或更新
- PostgreSQL ( 如前所述,基于knex,稍作修改即可支持其它数据库。但GraphQL / PostGraphile依赖PostgreSQL,如使用其它数据库,GraphQL相关初始化代码也请一并移除 )
postgres数据库中需要有一张名为user_tb
的表,结构和数据不限
conf/ 中配置好数据库
jsonwebtoken默认关闭,如果填入SECRET
配置项,才会开启header验证。请完善登录逻辑后再开启。
npm install
npm run n
默认启动在 http://localhost:3000/
graphiql挂载在 http://localhost:3000/gql/graphiql
graphql挂载在 http://localhost:3000/gql/graphql
其它事宜,参见以上readme,并查看package.json和项目代码。
- TypeScript + its decorators + reflect-metadata
- Koa 2
- Knex.js , a SQL query builder
- pg , Postgresql Nodejs driver
- PostGraphile , make GraphQL and Postgres things easy
- dotenv , configurations in .env files
- nodemon , auto restart node when code changes
- ts-node , execute .ts files without building to .js
- eslint , typescript-eslint ( TSLint is deprecated )
- concurrently , run multiple commands at one time
- open-cli , open URL in browser, through terminal.
inspired by:
https://github.com/midwayjs/midway/
Other similar projects:
https://github.com/thinkkoa/koatty