Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Hapijs插件与server.bind_Javascript_Node.js_Hapijs - Fatal编程技术网

Javascript Hapijs插件与server.bind

Javascript Hapijs插件与server.bind,javascript,node.js,hapijs,Javascript,Node.js,Hapijs,注册Hapi插件与通过服务器上下文提供底层节点模块相比有什么优势吗(假设插件没有向模块添加太多功能)?例如,对于mysql,我可以注册一个hapi mysql插件 server.register({ register: require('hapi-mysql'), options: { host: "localhost", user: "test", password: "test" } }, (err) => { if(err) { thr

注册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),但我想确保我没有遗漏任何东西。通过
server.bind传递数据库池实例并没有错,这是应用程序大多数部分可能需要的资源,它将提供更容易的访问。但如果您只有一个正在使用的插件,则建议您使用它<代码>服务器。应用程序
将是替代方案

服务器方法是服务器上常用的实用程序,但最好是 不跨越插件边界以减少依赖性

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

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