Node.js 如何使节点cms模块化

Node.js 如何使节点cms模块化,node.js,content-management-system,modularity,Node.js,Content Management System,Modularity,我想使我的节点cms(目前只有登录,注册,文章)模块化。就像你可以添加或删除任何模块只是删除或添加文件夹。但我找不到任何正确的、聪明的或任何方法来做这件事。你有什么经验、指南或例子可以帮助你吗 我在node方面比较新。 现在看起来是这样的。 在创建模块化cms的背景下,这个问题有点过于宽泛,然而,当谈到节点模块时,即使您只是添加或删除文件夹,您仍然必须在代码中要求它们 我想说的是,您可以拥有两种类型的插件: 支持的插件-您创建的插件,并为用户提供包含或不包含它们的选项 匿名插件-每个人都可以创建

我想使我的节点cms(目前只有登录,注册,文章)模块化。就像你可以添加或删除任何模块只是删除或添加文件夹。但我找不到任何正确的、聪明的或任何方法来做这件事。你有什么经验、指南或例子可以帮助你吗

我在node方面比较新。 现在看起来是这样的。

在创建模块化cms的背景下,这个问题有点过于宽泛,然而,当谈到节点模块时,即使您只是添加或删除文件夹,您仍然必须在代码中要求它们

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

  • 支持的插件-您创建的插件,并为用户提供包含或不包含它们的选项
  • 匿名插件-每个人都可以创建的插件,需要通过某种接口包含在应用程序中
  • 第二种类型的插件更复杂,因此我将只提及第一种类型。将它们包含在代码中的一个简单方法是使用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(...)
    }