如何使节点cms模块化

时间:2018-11-01 11:27:05

标签: node.js content-management-system modularity

我想使我的节点cms(目前仅登录,注册,文章)模块化。就像您可以添加或删除任何模块一样,只需删除或添加文件夹即可。但是我找不到任何正确或明智的方法。您是否有任何经验,指南或示例可以帮助您?

我在节点上相对较新。 这时看起来像这样。 enter image description here

1 个答案:

答案 0 :(得分:1)

在创建模块化cms的上下文中,这个问题有点太广泛了,但是,在谈论节点模块时,即使您只是添加或删除文件夹,您仍然必须在代码中require将它们{。 / p>

我想说,您可以有两种类型的插件:

  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(...)
}