Этот вопрос является слишком широким в контексте создания модульных cms, однако, когда речь идет о модулях узлов, даже если вы просто добавляете или удаляете папку, вам все равно нужно require
указать их в своем коде.
Я бы сказал, что есть 2 типа плагинов, которые вы можете иметь:
- Поддерживаемые плагины - плагины, которые вы создаете и которые дают пользователям возможность включать их или нет
- Анонимные плагины - плагины, которые каждый может создать, и которые должны быть включены в ваше приложение через какой-то интерфейс.
Второй тип плагинов более сложный, поэтому я буду ссылаться только на первый тип. Простой способ включить их в ваш код - это иметь JSON, в котором вы перечисляете свойства каждого плагина, а затем require
каждый плагин в вашем коде. Использование try/catch
предотвратит сбой вашего приложения, если плагин не существует:
var allowedPlugins = [
{name: "login", path: "login/index.js", loaded: false, module: null},
{name: "reg", path: "reg/reg.js", loaded: false, module: null},
{name: "articles", path: "articles/all.js", loaded: false, module: null}
];
allowedPlugins.forEach((plug) => {
try {
var module = require(plug.path);
plug.loaded = true;
plug.module = module;
} catch(err) {}
});
Позже в вашем коде вы можете сделать:
if (allowedPlugins.login.loaded) {
var login = allowedPlugins.login.module;
login.doLogic(...)
}