事件监听
调用方式: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); // 更新后的系统全局配置对象,包含应用内所有配置信息
});