事件监听

调用方式:app.trigger

在ibird启动的过程中,开发者可以通过对app.trigger设置监听函数来监听应用的各个状态,设置监听的方式如下:

const app = require('ibird-core');

app.config().trigger.on('ibird_app_all_before', (a, b, c) => {
    console.log('这是一切还没开始的时候......');
    console.log('我是参数a:', a);
    console.log('我是参数b:', b);
    console.log('我是参数c:', c);
});
app.config().trigger.on('ibird_route_mount_success', (a, b, c) => {
    console.log('这是所有自定义路由都挂载成功的时候......');
    console.log('我是参数a:', a);
    console.log('我是参数b:', b);
    console.log('我是参数c:', c);
});
app.config().trigger.on('ibird_app_start_success', (a, b, c) => {
    console.log('这是应用启动完成的时候......');
    console.log('我是参数a:', a);
    console.log('我是参数b:', b);
    console.log('我是参数c:', c);
});

事件列表

可供监听的事件列表有:

  • ibird_config_success:配置项注册成功
  • ibird_model_before:模型注册前
  • ibird_model_success:模型注册成功
  • ibird_app_all_before:应用启动前
  • ibird_app_static_before:静态目录挂载前
  • ibird_app_static_success:静态目录挂载后
  • ibird_app_middleware_before:应用中间件挂载前
  • ibird_app_middleware_success:应用中间件挂载后
  • ibird_route_mount_before:自定义路由挂载前
  • ibird_route_mount_success:自定义路由挂载后
  • ibird_route_model_before:模型路由挂载前
  • ibird_route_model_[name]_before:指定name的模型路由挂载前
  • ibird_route_model_[name]_success:指定name的模型路由挂载后
  • ibird_route_model_success:模型路由挂载后
  • ibird_app_start_success:应用启动后

接收参数说明

不同的事件,在触发时会传递不同参数,以下文档会对每一个事件的接收参数做详细说明:

配置项注册成功

事件名:ibird_config_success

const app = require('ibird-core');

app.config().trigger.on('ibird_config_success', (key, value, config) => {
    console.log('key', key);// 参数键,即调用参数配置时传递的第一个参数
    console.log('value', value); // 参数值,即调用参数项配置时传递的第二个参数
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

模型注册前

事件名:ibird_model_before

const app = require('ibird-core');

app.config().trigger.on('ibird_model_before', (name, obj, config) => {
const schema = obj.schema; // 模型描述对象
const collection = obj.collection; // 集合名称,
const skipInit = obj.skipInit; // 是否跳过初始化
console.log('name', name); // 模型标记
console.log('config', config); // 系统全局配置对象,包含应用内所有配置信息
});

模型注册成功

事件名:ibird_model_success

const app = require('ibird-core');

app.config().trigger.on('ibird_model_success', (name, obj, config) => {
    const schema = obj.schema; // 模型描述对象
    const collection = obj.collection; // 集合名称
    const skipInit = obj.skipInit; // 是否跳过初始化
    const Model = obj.Model; // 模型注册成功后返回的可操作对象,即mongoose的model对象
    console.log('name', name); // 模型标记
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

应用启动前

事件名:ibird_app_all_before

const app = require('ibird-core');

app.config().trigger.on('ibird_app_all_before', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

静态目录挂载前

事件名:ibird_app_static_before

const app = require('ibird-core');

app.config().trigger.on('ibird_app_static_before', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

静态目录挂载后

事件名:ibird_app_static_success

const app = require('ibird-core');

app.config().trigger.on('ibird_app_static_success', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

应用中间件挂载前

事件名:ibird_app_middleware_before

const app = require('ibird-core');

app.config().trigger.on('ibird_app_middleware_before', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

应用中间件挂载后

事件名:ibird_app_middleware_success

const app = require('ibird-core');

app.config().trigger.on('ibird_app_middleware_success', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

自定义路由挂载前

事件名:ibird_route_mount_before

const app = require('ibird-core');

app.config().trigger.on('ibird_route_mount_before', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

自定义路由挂载后

事件名:ibird_route_mount_success

const app = require('ibird-core');

app.config().trigger.on('ibird_route_mount_success', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

模型路由挂载前

事件名:ibird_route_model_before

const app = require('ibird-core');

app.config().trigger.on('ibird_route_model_before', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

指定name的模型路由挂载前

事件名:ibird_route_model_[name]_before

[name] 为是变量值,为模型标识,开发者可以通过该事件监听每个数据模型的路由挂载状态

const app = require('ibird-core');

// 如假设存在数据模型blog,则它的事件监听如下所示
app.config().trigger.on('ibird_route_model_blog_before', (name, app, router, config) => {
    console.log('name', name); // 模型标识
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

指定name的模型路由挂载后

事件名:ibird_route_model_[name]_success

[name] 为是变量值,为模型标识,开发者可以通过该事件监听每个数据模型的路由挂载状态

const app = require('ibird-core');

// 如假设存在数据模型blog,则它的事件监听如下所示
app.config().trigger.on('ibird_route_model_blog_success', (name, app, router, config) => {
    console.log('name', name); // 模型标识
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

模型路由挂载后

事件名:ibird_route_model_success

const app = require('ibird-core');

app.config().trigger.on('ibird_route_model_success', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

应用启动后

事件名:ibird_app_start_success

const app = require('ibird-core');

app.config().trigger.on('ibird_app_start_success', (app, router, config) => {
    console.log('app', app); // koa实例对象
    console.log('router', router); // koa-router实例对象,可以通过该对象挂载路由中间件
    console.log('config', config); // 更新后的系统全局配置对象,包含应用内所有配置信息
});

results matching ""

    No results matching ""