qunar node 开发解决方案

让你只专注在业务和展现

包含模块

qzz版本号 q-version


使用

var qversion = require('@qnpm/q-version');
// 初始化版本号
qversion.parse(path.join(__dirname, 'refs')); // 参数为ver目录所在路径

模板 q-template


使用

var qtemplate = require('@qnpm/q-template');

// 设置模板引擎
qtemplate(app, {
  views: __dirname + "/views", // 总模板目录
  layouts: 'layouts', // layout模板目录,默认views/layouts
  versions: qversion.versions()
});

模板使用详尽说明及接口

日志 q-logger

日志组件支持多进程工程,由主进程统一负责记录日志,支持不同的路由记录不同的日志文件,配置如下:

{
    logFiles: [
        {
            type: 'track', // 名称
            route: ['/track.htm', '/timetrack.htm'], // 路由,支持express风格路由
            appenders: [ // log4js appenders配置
                {
                    "type": "file",
                    "filename": "track.log",
                    "category": "track",
                    "level": "LOG",
                    "layout": {
                        "type": "messagePassThrough"
                    }
                }
            ]
        }
    ]
}

使用

初始化

主进程:

logger.init("master", [option]);
// [option]为多日志文件配置,如上

工作进程:

var logger = require('@qnpm/q-logger');
logger.init('worker', [option]); // 初始化日志系统

接口:

logger.error(); // 记录错误
logger.info(); // 记录普通日志

异常 q-exception


使用

var exception = require('@qnpm/q-exception');

exception.init(logger); // 初始化异常捕获系统,需传入logger用作错误记录

// 捕获异步异常,放到所有中间件前面
app.use(exception.catchAsync());

// 捕获同步异常,放到所有中间件后面
app.use(exception.catchSync());

healthcheck q-healthcheck


使用

var healthcheck = require('@qnpm/q-healthcheck');
// healthcheck 发布时有用
healthcheck.check(app, path.join(__dirname, 'healthcheck.html')); // 传入healthcheck的路径

监控 q-monitor


使用

var qmonitor = require('@qnpm/q-monitor');
qmonitor.addCount('监控指标名');
qmonitor.addTime('监控指标名', '时间');

多进程 q-multiprocess


使用

 var opts = {
  // CPU核数
  numCPUs: require('os').cpus().length,
  // 端口
  port: app.get('port'),
  // 子进程收到父进程消息后父进程执行方法
  workerMessage: function (msg, workers) {

  },
  ready: function(workers) {

  }
};

multiprocess.listen(app, opts);