@nfly实现了什么?
- 轻量高效易于扩展。
- 依赖性典型的面向切面编程思想
- 参数获取方便快捷
- 基于typeorm的使用扩展方便操作数据库
- middleware的配置加载顺序
- 环境变量
- ts支持
- 支持单测
脚手架 @nfly/cli
全局安装 pnpm add @nfly/cli --global
然后创建模版工程
核心模块 @nfly/core
import { createNFly } from '@nfly/core';
import { registerRouter } from '@nfly/router';
(async function _() {
# 创建服务
createNFly({
port: 8008,
root: __dirname,
router: registerRouter('/api'),
bodyOptions: {},
callback() {
console.log('app server');
},
useLogger: true,
}).start();
}());
路由模块 @nfly/router
服务启动入口 server.ts
# 路由注册入口
import { createNFly } from '@nfly/core';
import { registerRouter } from '@nfly/router';
# 此处省略代码
.....
createNFly({
port: 8008,
root: __dirname,
router: registerRouter('/api'),
bodyOptions: {},
callback() {
console.log('app server');
},
useLogger: true,
}).start();
controller文件 Pay.ts
import Koa from 'koa';
# 此处导入注册路由的方法 和解析路由上query和params的方法
import {
GET, Body, Service, Path, Query, Params, Before,
} from '@nfly/router';
import { BaseController, IContext } from '@nfly/core';
import HomeService from '../../service/Home';
function Test(target: any, key: symbol|string, des: any) {
const old = des.value;
// eslint-disable-next-line no-param-reassign
des.value = async function (...args: any) {
console.log('func start');
await old.apply(this, args);
console.log('func end');
};
}
@Before(async (ctx) => {
console.log('21212333444');
// ctx.body = '3333';
// return !0;
})
class Home extends BaseController {
// @Service(HomeService)
// homeServer!: HomeService;
@Test
@GET('/:aa')
async index(@Query() a: string, @Params('aa') c: string) {
// const list = await this.homeServer.getName();
this.ctx.json({
aaa: a,
c,
// list,
});
}
}
export default Home;
orm模块 @nfly/orm
快速创建工程
依赖安装mysql
- 启动链接本地的3306端口启动的mysql
- 建photo表
启动
pnpm add @nfly/cli --global
npm install @nfly/cli -g
yarn add @nfly/cli --global
nfly # 进入交互模式创建工程
cd xxx
yarn install
# 启动
yarn dev
# or
pnpm dev
# 访问
http://localhost:8008/api/user/123?name=jack&age=100
工程目录结构
.
├── dist //npm run build 构建产物
├── package.json
├── pnpm-lock.yaml
├── src // 源码文件目录
│ ├── config // 配置文件
│ │ ├── development.ts // 开发环境配置
│ │ └── production.ts // 生产环境配置
│ ├── controller // controller 目录 路由和参数校验
│ │ └── Home
│ │ └── index.ts
│ ├── index.ts // 服务启动入口 路由注册 服务创建
│ ├── middleware // 中间件
│ │ └── view.ts
│ ├── modal // orm映射modal
│ │ └── home.ts
│ └── service // service sql增删改查操作
│ └── Home
│ └── index.ts
├── tsconfig.json
├── yarn-error.log
└── yarn.lock