Javascript Hapijs插件与server.bind
注册Hapi插件与通过服务器上下文提供底层节点模块相比有什么优势吗(假设插件没有向模块添加太多功能)?例如,对于mysql,我可以注册一个hapi mysql插件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
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传递数据库池实例并没有错,这是应用程序大多数部分可能需要的资源,它将提供更容易的访问。但如果您只有一个正在使用的插件,则建议您使用它<代码>服务器。应用程序
将是替代方案
服务器方法是服务器上常用的实用程序,但最好是
不跨越插件边界以减少依赖性
一般来说,如果您发现自己在
你自己的应用程序插件,你做错了
因此,插件是模块化组件,其自身的业务逻辑与系统的任何其他部分分离,如果应用程序变得更大,插件可能是正确的解决方案