gpt4 book ai didi

javascript - Hapijs 插件与 server.bind

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:21 25 4
gpt4 key购买 nike

注册 Hapi 插件与通过服务器上下文使底层 Node 模块可用相比有什么优势(假设插件没有向模块添加太多功能)?例如,对于 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'
});

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

server.bind({dbPool: pool});

我个人更喜欢第二种方法 (server.bind),但我想确保我没有遗漏任何东西

最佳答案

通过 server.bind 传递数据库池实例的情况并没有错,应用程序的大部分部分可能都需要这种资源,并且它会提供更容易的访问。如果您只有一个插件,则建议您使用。 check Hammer's comment , server.app 将是备选方案。

Server methods are common utilities used around your server, but best to not cross plugin boundaries with them to reduce dependencies.

In general, if you find yourself using a lot of dependencies between your own application plugins, you are doing it wrong.

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

关于javascript - Hapijs 插件与 server.bind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com