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

Posted

技术标签:

【中文标题】相当于 Node.js 中的 laravel 风格的服务提供者(或 wp 风格的插件)【英文标题】:Equivalent to laravel-style service providers (or wp-style plugins) in Node.js 【发布时间】:2014-06-24 15:24:11 【问题描述】:

我来自 php/Laravel 背景,但我的团队非常倾向于在我们的下一个项目中使用 Node.js(和sails),这是一个为学者提供的协作工作室。但是,在我尝试之前,我有一个关于为 node.js 应用程序创建 laravel 风格的服务提供者(或 wordpress 风格的插件)的最佳实践的问题。

在 laravel 4.1 中加载服务提供者时,类在某个点加载,调用 boot() 方法,提供者可以“挂钩”到运行时触发的事件。服务提供者列表是从配置文件中的数组中提取的(尽管从数据库中获取它们与使用 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】:

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

它的灵感来自 Eclipse 插件系统,我希望它类似于您正在搜索的内容:

主机只需要js-plugins 来管理插件 插件只需要 package.json 中的一个特殊部分来描述它所提供的功能。

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

插件注册 目录扫描(针对插件的package.json

【讨论】:

以上是关于相当于 Node.js 中的 laravel 风格的服务提供者(或 wp 风格的插件)的主要内容,如果未能解决你的问题,请参考以下文章

node.js学习目录

Node.js 中的默认堆栈大小是多少?

Farrow 介绍:类型友好的函数式风格 Node.js Web 框架

与 Node.js / Socket.io 服务器共享 Laravel 会话

laravel项目拉取下来安装,node.js库安装

Lumen (Laravel) VS NODE.JS 解决方案