Вы можете использовать server.methods объект.В документе сказано:
Методы сервера - это функции, зарегистрированные на сервере и используемые в приложении как обычная утилита.Их преимущество заключается в возможности настроить их для использования встроенного кэша и совместного использования несколькими обработчиками запросов без необходимости создания общего модуля.
Теперь это ваш первый плагин:
const Nodemailer = require('nodemailer');
exports.plugin = {
name: 'mailerWrapperPlugin',
version: '0.0.1',
register: async function (server, options) {
server.method('sendMail', (subject, to, body) => {
// compose and send mail here
});
}
};
и это ваш второй, и убедитесь, что он загружен после первого.
exports.plugin = {
name: 'anotherPlugin',
version: '0.0.1',
register: async function (server, options) {
server.methods.sendMail("Hello", "test@test.com", "Sup?");
}
};
Вот и все.
Также вы можете использовать объект server.decorate .Его документ гласит:
Расширяет различные интерфейсы платформы с помощью пользовательских методов, где:
server.decorate может добавлять методы к нескольким другим объектам, таким как маршруты, запросы, сервер и объект ответа.
Если мы вернемся к вашему плагину:
exports.plugin = {
name: 'mailerWrapperPlugin',
version: '0.0.1',
register: async function (server, options) {
server.decorate('server', 'sendMail', (subject, to, body) => {
});
}
};
и ваш второй плагин, который был загружен после первого!
exports.plugin = {
name: 'anotherPlugin',
version: '0.0.1',
register: async function (server, options) {
server.sendMail("Hello", "test@test.com", "Sup?");
}
};
Разница между ними,объект server.methods
добавляет настраиваемые поля к объекту server.methods
, но с помощью server.decorate вы можете напрямую расширять свой сервер или запрашивать объекты.Используйте тот, который вам более понятен, я предпочитаю server.decorate
в целом.