An open API service indexing awesome lists of open source software.

https://github.com/yefei/zenweb

Modular lightweight web framework based on Koa
https://github.com/yefei/zenweb

koa zenweb

Last synced: about 2 months ago
JSON representation

Modular lightweight web framework based on Koa

Awesome Lists containing this project

README

          

# ZenWeb

Modular lightweight web framework based on Koa

## Document

[ZenWeb 文档](https://zenweb.node.ltd)

## Install

```bash
# for production
npm install zenweb

# for development
npm install dotenv typescript rimraf tsc-watch --save-dev
```

## Project Code

edit `package.json` file at `scripts`:

```json
"scripts": {
"start": "node --enable-source-maps app",
"dev": "rimraf app && tsc-watch --onSuccess \"npm run dev-start\"",
"dev-start": "node -r dotenv/config --enable-source-maps app",
"build": "rimraf app && tsc"
}
```

create `tsconfig.json` file

```json
{
"extends": "zenweb/tsconfig-app",
"compilerOptions": {
"outDir": "./app"
},
"include": ["src/**/*"]
}
```

create `.env` file

```bash
APP_NAME=myweb
NODE_ENV=development
DEBUG=*
```

create `src/index.ts` file

```ts
import { create } from 'zenweb';
create().start();
```

create `src/service/hello.ts` file

```ts
import { inject } from 'zenweb';

export class HelloService {
@inject ctx!: Context;

getIp() {
return this.ctx.ip;
}
}
```

create `src/controller/hello.ts` file

```ts
import { mapping } from 'zenweb';
import { HelloService } from '../service/hello';

export class HelloController {
@mapping()
index(service: HelloService) {
const ip = service.getIp();
return `Hello ZenWeb! ${ip}`;
}
}
```

start server:

```bash
npm run dev
```

## 内置模块
- [core](https://www.npmjs.com/package/@zenweb/core) 核心
- [meta](https://www.npmjs.com/package/@zenweb/meta) 运行基本信息,例如:请求耗时
- [inject](https://www.npmjs.com/package/@zenweb/inject) 注入支持
- [router](https://www.npmjs.com/package/@zenweb/router) 路由支持
- [log](https://www.npmjs.com/package/@zenweb/log) 日志支持
- [result](https://www.npmjs.com/package/@zenweb/result) 统一结果返回,成功或失败
- [messagecode](https://www.npmjs.com/package/@zenweb/messagecode) 统一错误消息格式化
- 依赖 inject, result
- [controller](https://www.npmjs.com/package/@zenweb/controller) 类控制器支持
- 依赖 inject, router
- [helper](https://www.npmjs.com/package/@zenweb/helper) 输入数据验证助手
- 依赖 inject, messagecode
- [body](https://www.npmjs.com/package/@zenweb/body) 请求主体解析,JSON、Form
- 依赖 inject, helper

内置模块默认开启,可以通过设置配置项为 **false** 关闭

## 可选模块
- [cors](https://www.npmjs.com/package/@zenweb/cors) 跨域支持
- [sentry](https://www.npmjs.com/package/@zenweb/sentry) sentry 错误收集
- [metric](https://www.npmjs.com/package/@zenweb/metric) 生产运行健康信息收集
- [validation](https://www.npmjs.com/package/@zenweb/validation) JSONSchema 验证
- [mysql](https://www.npmjs.com/package/@zenweb/mysql) MySQL 数据库支持
- [orm](https://www.npmjs.com/package/@zenweb/orm) ORM 支持
- [template](https://www.npmjs.com/package/@zenweb/template) 模版渲染
- [schedule](https://www.npmjs.com/package/@zenweb/schedule) 定时任务
- [form](https://www.npmjs.com/package/@zenweb/form) 统一表单(多用于后台)
- [grid](https://www.npmjs.com/package/@zenweb/grid) 统一表格(多用于后台)
- [upload](https://www.npmjs.com/package/@zenweb/upload) 文件上传支持
- [xmlBody](https://www.npmjs.com/package/@zenweb/xml-body) XML Body 解析
- [msgpack](https://www.npmjs.com/package/@zenweb/msgpack) MessagePack 输出