相当于Node.js中的laravel风格的服务提供者(或wp风格的插件)

时间:2014-05-07 15:00:44

标签: javascript node.js events laravel sails.js

我来自PHP / Laravel背景,但我的团队倾向于将Node.js(和风帆)用于我们的下一个项目,这是一个针对学者的合作工作室。但是,在我采取行动之前,我有一个关于为node.js应用程序创建laravel样式服务提供程序(或wordpress样式插件)的最佳实践的问题。

在laravel 4.1中加载服务提供程序时,会在某一点加载该类,调用boot()方法,并且提供程序可以" hook"进入在运行时触发的事件。服务提供者列表是从配置文件中的数组中提取的(尽管从数据库获取它们就像使用wordpress一样容易)。

基本上,我正在寻找的是这个PHP代码的Node.js等价物:

// Get an array of installed plugins from a config file (or database)
$exts = require_once 'config/installed_plugins.php';

/*
 * The $exts array looks like this $ext['class_name'] = '/plugin/file/path.php'
 * and each plugin file is a class with a boot() method that registers events 
 * with callbacks 
 */

// Iterate and boot each plugin
foreach ($ext as $class=> $path) {
    require $path;
    $c = new $class();
    $c->boot();  // Now this plugins events have been registered
}

显然这个伪代码有很多安全漏洞,不适合生产,但我认为这是我的观点。

我知道(并且喜欢)Javascript的事件驱动性质,所以我想用Node.js很容易实现类似的东西,但是我无法找到加载服务提供者的地方或方式并允许他们挂钩执行。

1 个答案:

答案 0 :(得分:1)

js-plugins 是基于扩展点的开放式插件框架。

它受到 Eclipse 插件系统的启发,我希望它类似于你所搜索的内容:

  • 主持人只需要js-plugins来管理插件
  • 插件只需要package.json中的特殊部分来描述它提供的内容。

根据您的要求提供的相关主机端功能:

  • 插件注册
  • 目录扫描(插件'package.json