【问题标题】:Hapijs plugin vs server.bindHapijs 插件与 server.bind
【发布时间】:2016-04-05 04:19:36
【问题描述】:

注册 Hapi 插件与通过服务器上下文使底层节点模块可用(假设插件不会向模块添加太多功能)有什么优势吗?例如,对于 mysql,我可以注册一个 hapi-mysql 插件

server.register({
  register: require('hapi-mysql'),
  options: {
    host: "localhost",
    user: "test",
    password: "test"
  }
}, (err) => {
  if(err) {
    throw err;
  }
});

然后通过服务器变量访问它

var dbPool = server.plugins['hapi-mysql'].pool;

另一种方法是直接创建一个mysql池实例

var mysql = require('mysql');
var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'localhost',
  user            : 'test',
  password        : 'test'
});

并将其绑定到服务器上下文

server.bind({dbPool: pool});

我个人更喜欢第二种方法(server.bind),但要确保我没有遗漏什么

【问题讨论】:

    标签: javascript node.js hapijs


    【解决方案1】:

    通过server.bind 传递数据库池实例的情况并没有错,这是应用程序的大多数部分可能需要的资源,它可以更轻松地访问。如果您只有一个正在开发的插件,建议您这样做。 check Hammer's comment , server.app 将是替代方案。

    服务器方法是围绕您的服务器使用的常用实用程序,但最好 不要与它们跨越插件边界以减少依赖关系。

    一般来说,如果你发现自己在 你自己的应用插件,你做错了。

    因此,插件是模块化组件,其自身的业务逻辑与系统的任何其他部分分离,如果您的应用程序变得更大,它可能是正确的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-12
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多