2o3t-core
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.34 • Public • Published

    说明记录

    项目结构(必须)

    ROOT: {
        config(s): "配置文件Config存放处",
        plugin(s): "插件统一存放, 只加载根目录的文件及文件夹, 不支持文件包含",
        helper(s): "工具辅助类统一存放(一般是固定不变的静态工具)",
        middleware(s): "中间件统一存放",
        controller(s): "控制器统一存放",
        service(s): "服务类型统一存放",
        router(s): "路由控制类统一存放",
    }

    类加载顺序: config > plugin > helper > middleware > controller > service > router

    Init

    初始化, 例如:

        const AppCore = require('./app/server');
     
        const app = new AppCore({
            baseDir: __dirname, // 根目录, (选配, 默认 process.cwd())
        });

    Config

    环境配置: .env , 如下:

        HOSTNAME=localhost
        # node env
        NODE_ENV=development
        # scope
        SERVER_SCOPE=local
     
        # logger 启用日志列表
        LOGGER_ALLOW=*  # 全部开启
        LOGGER_ALLOW=DEBUG,INFO,ERROR,WARN  # 部分开启
        # logger 禁用日志列表
        LOGGER_BAN=NULL # 不开启禁用
        LOGGER_BAN=* # 全部禁用
        LOGGER_BAN=TEST,SYSTEM # 部分禁用
     
        CORE_NAME=2O3T-Core # 应用名称

    配置文件支持类型 [ js | json ]

    加载顺序:

    Will merge config(s)/default.js 和 config(s)/${process.env.SERVER_SCOPE}.js 和 config(s)/${process.env.NODE_ENV}.js 和 config(s)/${process.env.SERVER_SCOPE}_${process.env.NODE_ENV}.js

        '/configs/default.js',
        '/configs/local.js',
        '/configs/development.js',
        '/configs/local_development.js',
     
        '/configs/plugin.default.js',
        '/configs/plugin.${scope}.js',
        '/configs/plugin.${env}.js',
        '/configs/plugin.${scope}_${env}.js',
     
        '/configs/middlewares.default.js',
        '/configs/middlewares.${scope}.js',
        '/configs/middlewares.${env}.js',
        '/configs/middlewares.${scope}_${env}.js',
     
        '/configs/controller.default.js',
        '/configs/controller.${scope}.js',
        '/configs/controller.${env}.js',
        '/configs/controller.${scope}_${env}.js',
     
        '/configs/service.default.js',
        '/configs/service.${scope}.js',
        '/configs/service.${env}.js',
        '/configs/service.${scope}_${env}.js',
     
        '/configs/router.default.js',
        '/configs/router.${scope}.js',
        '/configs/router.${env}.js',
        '/configs/router.${scope}_${env}.js',

    优先级:

        default > {SERVER_SCOPE}  > {NODE_ENV} > {SERVER_SCOPE}_{NODE_ENV}

    Plugin

    插件代表是组件, 可独立生产(但是不能独立运行),插件中的 中间件 会进行全局注册, 并且优先级最高。 默认自动加载plugin(s)目录下文件, 可在初始化时, 更改目录路径.

    PluginConfig

    可配置config信息, 如下:

    // 普通配置
    module.exports = {
        mixins: [ 'plugin1', 'plugin2' ],  // 指定加载顺序, 自动加载plugin(s)目录下文件
        plugin1: { // 给 ‘plugin1’ 指定配置文件
            s: [],
        },
    };
    // 文件夹 或 模块配置
    module.exports = {
        middleware: { // 扩展中间件
            mixins: [ 'a-b', 'c-0', 'bodyParse' ], // 全局顺序注册加载
            bodyParse: {
                enable: true, // 开启全局注册(可选)
                p: "", // 参数
            },
        },
        controller: { // 扩展 controller
            mixins: [ 'user' ],
        },
        service: { // 扩展 service
            mixins: [ 'user' ],
        },
        config: { // 其它参数
            RPG: 'I AM Plugins',
        },
        "555": "666",  // 其它参数
    }

    插件类型可以是以下任一种:

    • 一个单独的外部模块.
    • 一个单独的内部文件夹.
    • 一个单独的文件.

    插件返回值(支持任何形式)可进行全局注册, 调用如下:

        this.plugin.${filename}
        // or
        app.loadPlugin.${filename}

    Middleware

    中间件,只是全局进行注册,但是并不进行使用。 可以在 Router 中配置使用,或者手动使用 app.loadMiddleware.${filename}

    如果想全局使用的话,可以在 config/middlewares.${default}.js 中单独配置,通过 mixins 进行全局顺序注册, 或者是 enable 参数进行注册,如下:

        mixins: [ 'bodyParse' ], // 自动进行全局顺序注册
        bodyParse: {
            enable: true, // 开启自动全局注册(true-全局注册, false-不开启)
            bo: 33,
            c: 3,
        },

    Controller

    config/controller.${default}.js 中可以通过 mixins 配置需要加载的 Controller 优先顺序, 默认加载所有 Controller 文件。 其它参数配置统一。

        mixins: [ 'user', 'cms' ], // 控制加载顺序
     
        user: {
            name: 'xiao ming, 红',
        },

    另,Controller 文件需要以如下格式书写,如:

    class UserController {
     
    }
    module.exports = UserController;

    注入参数可通过 this.options 进行获取。 还支持以下参数:

    this.appInfo
    this.config
    this.plugin
    this.service
    this.helper
    this.logger

    Service

    待补充

    class UserService {
     
        updateInfo() {
            // do something
        }
    }
     
    module.exports = UserService;

    Router

    待补充

    module.exports = function(router) {
        router.get('/', this.controller.user.index);
        router.get('/test', router.new().routes());
        // 代理透传
        router.proxy('/p/fef91266a44c', {
            target: 'https://www.baidu.com',
            headers: {
                '007': '008',
            },
        });
    };

    Helper

    待补充

        app.loadHelper.${filename}.${method};
        // ort
        this.helper.${filename}.${method};

    Utility (系统工具类)

    待补充

    引用 2o3t-utility 工具库

    Custom ???

    暂无

    Install

    npm i 2o3t-core

    DownloadsWeekly Downloads

    228

    Version

    0.0.34

    License

    MIT

    Unpacked Size

    116 kB

    Total Files

    37

    Last publish

    Collaborators

    • avatar