<p align="center">
  <a href="https://arya.lovejade.cn/" target="_blank">
    <img width="100"src="https://raw.githubusercontent.com/nicejade/arya-jarvis/master/assets/images/logo.png">
  </a>
</p>

<h1 align="center">gateway(暂定)</h1>

<div align="center">
  <strong>
    网关,中间层服务,可拔插式多元化服务
  </strong>
</div>

<br>

<div align="center">
  <a href="https://nodejs.org/en/">
    <img src="https://img.shields.io/badge/node-%3D%2012.0.0-green.svg" alt="Node Version">
  </a>
  <a href="https://nicelinks.site/post/5c16083e819ae45de1453caa">
    <img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat" alt="Prettier">
  </a>
</div>

## 目标与哲学

想做一个node+typescript+koa的服务层,用来满足一部分前端的需求,从而在无后端的情况下实现一套服务。

内置满足多种需求的服务,比如网关、服务代理、静态服务器、api服务、websocket服务等等

内置多种按需引入的插件(目前没有分离出插件包的打算,因为只是简单的再次封装一下,后续看情况再说),目前有`redis`,`log4js`,`nedb`

**api服务**这块目前是使用restful风格

## 先决条件

说明用户在安装和使用前,需要准备的一些先决条件,譬如:您需要安装或升级 [Node.js](https://nodejs.org/en/)(> = `12.* `,Npm 版本 >= `6.14.8 `,[Yarn](https://yarnpkg.com/) 作为首选)。

## TODO

- [x] redis插件
- [x] 本地缓存和本地嵌入式数据库插件
- [x] 日志插件
- [x] 开发环境热更新和生产环境pm2部署
- [x] eslint代码风格规范化
- [x] 大文件切片上传
- [ ] mysql插件
- [ ] mongo插件
- [ ] 邮件系统插件
- [ ] excel/word等导入/导出功能的插件
- [ ] 可拔插插件和插件之间依赖兼容处理
- [ ] 加密服务的完善(目前只有针对id的加解密,后续拓展MD5、hash等加密方式)
- [ ] websocket服务完善
- [ ] 项目结构和代码优化调整
- [ ] docker化?

## 安装

```bash
yarn install
```

## 用法

#### 生产编译和启动

```bash
# 生产编译
yarn run compile
# 普通启动
node dist/app.js
# pm2 守护进程启动
yarn run pm2:start
# pm2 list
yarn run pm2:list
# pm2 stop
yarn run pm2:stop
# pm2 restart
yarn run pm2:restart
```

将`typescript`代码编译成`javascript`放在dist目录下,然后运行服务

#### 开发

```bash
yarn dev
```

通过`nodemon`在内存中将`typescript`编译成`javascript`,并运行服务,同时监听变动的文件并重启服务

## 屏幕截图(可选)

包括 logo / demo 截图等。

## 支持(可选)

告诉人们他们可以去哪里寻求帮助。它可以是 issue 跟踪器,聊天室,电子邮件地址等的任意组合。

## 测试(可选)

```bash
npm test
```

用代码示例描述并展示如何运行测试。

## 路线图(可选)

如果您对将来的发行版有任何想法,最好在 README 文件中列出它们。

## 贡献(可选)

欢迎提出请求。对于重大更改,请先打开一个 issue,以讨论您要更改的内容。请确保适当更新测试。

## 作者和致谢(可选)

向那些为该项目做出贡献的人表示感谢。

## 执照

[MIT](http://opensource.org/licenses/MIT)

版权所有 (c) 2021-至今,[您的名字](您的主页网址)。

## 项目状态(可选)

如果您没有足够的精力或时间来完成项目,请在 README 文件的顶部添加注释,指出开发速度已减慢或完全停止。可能有人会选择 fork 您的项目,或者,以维护者或所有者的身份自愿加入,从而使您的项目继续进行下去。您也可以明确要求维护者。