Я создал небольшой CLI с Node.js с некоторыми базовыми функциями c. Теперь я хотел бы добавить GUI, созданный с помощью Electron, к этому CLI в качестве расширения / плагина, который можно установить отдельно. По сути, предоставляя пользователю слой представления, который использует те же функции, что и CLI (но в GUI).
Однако я не совсем уверен, как go об этом. Я изо всех сил пытаюсь создать хорошую (или любую) архитектуру, которая бы позволяла такое расширение, поскольку GUI (плагин) должен напрямую взаимодействовать с функциональностью основного приложения, но должен работать отдельно.
Я подумал о нескольких решениях, и все они кажутся мне довольно странными.
Решение № 1:
Добавить функциональность установки в CLI, которая в основном тянет пакетную форму npm в отдельную папку (т.е. ./plugins/). Затем добавьте команду «start», которая запускает электронное приложение через CLI. Затем плагину потребуются основные функциональные возможности CLI с помощью require, в основном в коде есть что-то вроде этого:
const mainAppFuncs = require(path.join(__dirname, '..', '..', 'funcs'));
Это, кажется, работает "отлично", однако, это кажется очень подверженным ошибкам и кажется очень плохим выбор дизайна
Это, однако, позволило бы мне напрямую связаться с плагином (GUI) с реальным приложением.
Решение # 2
Вторая идея, которая у меня есть, установить пакет с помощью команды npm install <some-package>
в папке root приложения, зарегистрировать плагин и затем запустить его через основное приложение. Однако я не совсем уверен, как заставить коммуникацию работать от плагина к основному приложению. Это похоже на одностороннюю связь, идущую от CLI к плагину, и, возможно, потребуется какое-то промежуточное программное обеспечение для связи между ними.
Я был бы очень признателен за любые идеи по этому поводу, поскольку я не уверен, как обычно реализуются подобные вещи.
Спасибо!