0.2.0 • Published 6 years ago

neg-express-server v0.2.0

Weekly downloads
1
License
MIT
Repository
-
Last release
6 years ago

neg-express-server

结合常用套路,利用Express搭建的一套NODE服务端开发库,能够简化项目的初始化。

如何用?

# 安装
npm i -S neg-express-server

# 常规使用
const negExpressServer = require('neg-express-server');
const config = require('./config');

negExpressServer.initNegConfig({ env: 'gdev', system: 'newkit', key: 'newkit-plugin-registry-config' })
  .then(conf => {
    config.setConfig(conf);
    return conf;
  })
  .then(conf => {
    return negExpressServer.startServer({
      port: conf.port,
      routesPath: path.join(__dirname, 'routes')
    });
  })
  .then(server => {
    let addr = server.address();
    console.log(`Server started at ${addr.address}:${addr.port}...`);
  })
  .catch(console.error);


# config.js内容
const config = {
  setConfig(conf) {
    // 防止覆盖setConfig
    if (conf.setConfig) {
      console.warn('config key setConfig not allowed.');
      delete conf.setConfig;
    }
    Object.assign(this, conf);
  }
};
module.exports = config;

如果不使用 Config Service,那么用法更简单,如下:

const config = require('./config'); 
negExpressServer.startServer({
  port: config.port,
  routesPath: path.join(__dirname, 'routes')
})
  .then(server => {
    let addr = server.address();
    console.log(`Server started at ${addr.address}:${addr.port}...`);
  })
  .catch(console.error);

配置项

整个库涉及到有两个配置项,一个是初始化NegConfig时,需要提供一个配置项:

initNegConfig(options)

其中 options 包含以下属性:

  1. env { string } -- 配置运行环境,可选 gdev, gqc, prdtesing, prd,表示从哪个环境读取配置
  2. connectionString { string } -- 和env任选其一(必选其一),表示从哪个地址读取config,会优先读取connectionString。
  3. system { string } -- 必选,ConfigService中的system。
  4. key { string } --必填,ConfigService中的key

注意,在配置config service的时候,请设置config 格式为JSON。

另外一个配置项是启动Express Server时候的配置项,如下:

negExpressServer.startServer(options);

其中 options 包含以下属性:

1. port { number } 服务启动端口,默认3000
2. enableApiErrorHandler { bool } 是否启用API错误处理,默认true
3. enableCors { bool } 是否启用cors,默认true
4. corsOptions { object } CORS相关设置,请参考package cors
5. enableResponseTime { bool } 是否启用响应时间输出,默认true
6. responseTimeOptions: {}, 响应时间输出配置,请参考package response-time
7. enableMorganLog: { bool } 是否启用morgan日志,默认true
8. logFormat { string } Morgan日志格式,默认 'combined'
9. logOptions { object } Morgan日志配置对象,请参考package morgan
10. enableFaq: { bool } 是否启用FAQ,默认true
11. faqOptions: { object } // FAQ请求参数
    1. path { string } faq path。默认 /faq
    2. result { any } faq请求返回值,默认 'ok'
12. urlEncodedOptins: { // URL转换参数
    extended: false,
    limit: '1mb'
  },
13. jsonParserOptions: { // JSON转换参数
    limit: '1mb'
  },
14. routesPath: path.join(process.cwd(), 'routes') 路由所在的目录配置,支持多级目录