serverlib-fisher

1.2.8 • Public • Published

serverlib-fisher

介绍

本库只是一个node服务端的基础库,支持插件方式使用功能。

更新列表

安装教程

npm i serverlib-fisher --save

基础插件:

PlusHttpServer  基于koa的http服务插件
PlusRedis       redis
PlusSequelize   基于sequelize的orm数据库插件
PlusSchedule    计划任务插件

启动服务 new App().start();

服务启动参数说明

启动命令node App.js --env=prod --port=1000 env代表环境,会根据不同的环境加载根目录下不同的config_${env}.json文件 port代表监听的服务端口 所有启动参数都在processArg对象上,结构参照--key=value

config结构说明

{
    "sql": {
        "options": {
            "host": "xxx.xxx.xxx.xxx",
            "port": "端口",
            "dialect": "mssql或者mysql"
        },
        "dbName": "db名",
        "user": "用户用",
        "pwd": "密码"
    },
    "redis": {
        "port": 6379,
        "host": "127.0.0.1",
        "db": 0
    },
    "port": 1000            //监听的端口,如果启动命令带了端口,则使用启动命令的
    "logLevels": {                      //通过修改default的日志等级,可以在服务开启的情况下调整日志级别。  日志服务使用的是log4js
        "default": "ALL"
    },
    "logConfig": {                  //增加自定义的日志口子
        "appenders": {
            "clientLog": {
                "type": "dateFile",
                "filename": "${workspace}/logs/client/client",
                "pattern": "yyyy-MM-dd.log",
                "alwaysIncludePattern": true,
                "daysToKeep": 30
            }
        },
        "categories": {
            "clientLog": {
                "appenders": [
                    "clientLog",
                    "console"
                ],
                "level": "INFO"
            }
        }
    },
    "koa":{
        proxy:false,                 //是否有代理,默认false
        subdomainOffset:2,        //子域偏移量,默认2
        proxyIpHeader:X-Forwarded-F,          //代理ip头,默认为X-Forwarded-F
        maxIpsCount:0,            //从代理ip头读取的最大ip数,默认为0(表示无穷大)
        env:any,
        keys:any                       //签名cookie密钥
    }
}

插件使用说明

PlusSchedule

计划任务的文件都必须放在schedule目录下,文件结构如下

import { ScheduleBase } from "../base/plus/schedule/ScheduleBase";

export class ScheduleEveryDay extends ScheduleBase {
    get config() {
        return {
            cron: "0 0 0 * * *" //每日0点
        };
    }

    protected async mExecute() {
        //这些写计划任务的内容
    }
}

PlusHttpServer

作为基于http服务插件,所有接口都放在controller下建文件导出对象,文件形式如下

import { BaseService } from "../base/plus/httpServer/BaseService";

export class GmServer extends BaseService {
    constructor() {
        super();
        this._regist(this.func,"post", "gmAuthorize");      //post可以是get,最后一个参数可以不传,则接口cmd就是${文件名}/${方法名}
    }

    async func(a1,a2,a3){       //这里的参数key名就是访问接口对象中的key
        //这里写接口逻辑
    }
}

对外接口的访问结构如下: http://serverUrl/cmd

a1:xxx,
a2:xx,
a3:xxx

返回结构如下:

code:number;               //正常为200,其余都是异常
msg:string;                //异常信息描述
data:any;                  //返回内容数据

PlusSequelize

作为数据库组件,所有model对象都必须放在model目录下,文件结构如下:

import { ModelConfigBase } from "../base/plus/sequelize/ModelConfigBase";
import { ModelBase } from "../base/plus/sequelize/ModelBase";
import { DataTypes } from "sequelize";

export class ModelGameConfig extends ModelConfigBase {
    static readonly TABLE_NAME: string = "config_base_game";
    protected mInit() {
        this.mNeedSync = false;
        this.mAddAttr("id", { type: DataTypes.INTEGER, primaryKey: true });
        this.mAddAttr("name", DataTypes.STRING(64));
        this.mAddAttr("status", DataTypes.INTEGER);
        super.mInit();
    }
}

export class ModelGame extends ModelBase {
    id: number;
    name:string;
    status:number
}

Readme

Keywords

Package Sidebar

Install

npm i serverlib-fisher

Weekly Downloads

1

Version

1.2.8

License

ISC

Unpacked Size

165 kB

Total Files

106

Last publish

Collaborators

  • sleepfisher
  • jimmy-cheng