Как сделать узел CMS модульным - PullRequest
0 голосов
/ 01 ноября 2018

Я хочу сделать мой узел cms (на данный момент только логин, рег, статьи) модульным. Как вы можете добавить или удалить любой модуль, просто удалив или добавив папку. Но я не могу найти правильный или умный или какой-либо способ сделать это. У вас есть опыт, руководства или примеры, которые могут помочь?

Я относительно новичок в узле. На данный момент это выглядит так. enter image description here

1 Ответ

0 голосов
/ 03 ноября 2018

Этот вопрос является слишком широким в контексте создания модульных cms, однако, когда речь идет о модулях узлов, даже если вы просто добавляете или удаляете папку, вам все равно нужно require указать их в своем коде.

Я бы сказал, что есть 2 типа плагинов, которые вы можете иметь:

  1. Поддерживаемые плагины - плагины, которые вы создаете и которые дают пользователям возможность включать их или нет
  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(...)
}
...