У вас есть несколько вариантов.
Вы можете взглянуть на Glue. Вы можете использовать синтаксис массива для плагинов, чтобы загружать плагины в определенном порядке:
var Glue = require('glue');
var manifest = {
server: {
cache: 'redis'
},
connections: [
{
port: 8000,
labels: ['web']
},
{
port: 8001,
labels: ['admin']
}
],
plugins: [
{ 'Plugin1': null },
{ 'Plugin2': null }
]
};
var options = {
relativeTo: __dirname
};
Glue.compose(manifest, options, function (err, server) {
if (err) {
throw err;
}
server.start(function () {
console.log('Hapi days!');
});
});
Это то же самое, что делать следующее без использования клея:
server.register(require('Plugin1'), function (err) {
server.register(require('Plugin2'), function (err) {
server.start(function () {
console.log('Hapi days!');
});
});
});
Однако плагины, зависящие от порядка, запутаны, и hapi предлагает лучший способ исправить это. Вы можете использовать server.dependency()
, чтобы явно указать зависимость плагина от другого плагина. Итак, внутри Plugin2 вы можете сделать:
var ready = function (server, next) {
server.route({
...
});
next();
};
exports.register = function (server, options, next) {
server.dependency('Plugin1', ready);
next();
};
exports.register.attributes = {
name: 'Plugin2',
version: '0.0.1'
};
При таком подходе не имеет значения порядок регистрации плагина. Это отлично подходит для больших приложений, над которыми работает множество плагинов, над которыми работают разные люди или команды.
person
Matt Harrison
schedule
24.08.2015