0.0.9 • Published 1 year ago

egg-qingshu v0.0.9

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Egg-qingshu 插件

启用插件

config/plugin.js 文件中声明启用插件:

exports.qingshu = {
  /** 是否启用插件,true 为启用,false 为禁用 */
  enable: true,

  /** 指定插件使用的包,请填写 'egg-load' */
  package: 'egg-qingshu',
};

配置方式

config/config.${env}.js文件配置插件:

自动挂载第三方模块至 Egg.js 框架上

forked from inlym/egg-load

config.qingshu = {
  /** 需要挂载的模块列表 */
  module: [
    /** 列表项支持对象(object)和字符串(string)两种形式 */
    {
      /** 需要挂载的 npm 包的包名,例如 axios,必填 */
      package: 'pkg1-name',

      /** 挂载的属性名,例如填 abc,该模块可以通过 app.abc 进行访问,默认为包名,选填 */
      name: 'abc',

      /** 是否禁用,默认为否,选填 */
      disabled: false,
    },

  /** 使用字符串形式只需要输入包名即可,其他属性按照默认属性自动设置 */
    'pkg2-name',
  ],

  /** 是否挂载到 app 上,默认开启 */
  app: true,

  /** 是否挂载到 agent 上,默认关闭 */
  agent: false,
}

示例

我们模拟以下这个使用场景,来演示如何配置和使用本插件:

发现 axios 和 only 两个模块的使用率非常高,于是准备将这两个模块挂载到框架上。

config/plugin.js 文件中声明启用插件:

exports.qingshu = {
  enable: true,
  package: 'egg-qingshu',
};

config/config.${env}.js文件配置插件(示例是一个典型的配置方式):

config.qingshu = {
  module: [
    {
      package: 'axios',
      name: 'req',
    },
    'only',
  ],
}

通过上述示例方式配置后,可以通过 app.res 访问 axios 模块,以及通过 app.only 访问 only 模块。

123pan 模块使用方法

首先config.default.js中配置

config.qingshu = {
    app: true,
    agent: false,
    pan123: {
        privateKey: 'privateKey',
        uid: 123,
        validDuration: 15 * 60 * 1000,
    },
};

使用

/**
     * 使用 pan123 对 URL 进行处理
     *
     * @param url 待处理的 URL
     * @param options 可选参数,用于配置 pan123 调用
     * - options.privateKey pan123 的私钥
     * - options.uid pan123 的用户 ID
     * - options.validDuration 链接的有效时长(秒)
     * - demo pan123('http://url/690211379', {
            privateKey: 'privateKey',
            uid: 123,
            validDuration: 15 * 60 * 1000,
        })
     * @returns 处理后的 URL
     * @throws 当 URL 为空时,抛出异常 'URL is required'
     * @throws 当配置参数无效时,抛出异常 'Invalid options provided. Ensure privateKey, uid, and validDuration are specified correctly.'
     */
    - 完整写法
const pan = await ctx.helper.pan123('http://url/690211379', {
            privateKey: 'privateKey',
            uid: 123,
            validDuration: 15 * 60 * 1000,
        });
        console.log(pan);

    - 简单写法
    const pan = await ctx.helper.pan123('http://url/690211379');
        console.log(pan);

统一错误处理

/**
     * 处理失败响应
     *
     * @param options 选项对象,默认为空对象
     * - options.infocode 自定义code
     * - options.message 自定义消息
     * @param errorCode HTTP状态码,默认为409
     * @param code 自定义状态码,默认为1
     * @returns 无返回值
     */
  - 完整写法
    ctx.helper.fail({infocode = 1, message = 'fail'},200,1);
  - 简单写法
    ctx.helper.fail('自定义错误信息')

统一成功处理

/**
     * 成功响应处理函数
     *
     * @param data 响应数据,默认为null
     * @param msg 响应消息对象,默认为空对象
     * - msg.infocode 自定义code
     * - msg.message 自定义消息
     * @param options 额外响应选项,默认为空对象
     * @param code 响应状态码,默认为0
     * @returns 无返回值,直接设置响应状态码和响应体
     */
    ctx.helper.success(data,{ infocode = 0, message = 'success' })
    - 完整写法
    ctx.helper.success(result, {
        infocode: 20002,
        message: '登陆成功!',
    },{
        token:token,
        time:new time()
    },0);
    - 简单写法
    ctx.helper.success(result)
    ctx.helper.success(data,'成功')
0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago