javascript - 使用 JavaScript/Node.js 实现插件架构

标签 javascript node.js design-patterns plugins express

下面是一个使用 express 的简单 node.js

var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('Hello World');
});

app.listen(3000);

我想实现一个plugin-in的架构,比如默认有个文件夹叫做plugins,在node.js启动的时候会自己注册,不需要修改主要的 server.js

foo 插件示例,例如

PluginManager.register("init, function(app) {
    app.get('/foo', function(req, res){
        res.send('Hello from foo plugin');
    });
});

然后在我的 server.js 中,我会有类似的东西

// TODO: Scan all scripts under the folder `plugins`
// TODO: Execute all the `init` hook before the app.listen
app.listen(3000);

我的问题是我的插件代码都是异步的,没有办法在 app.listen() 之前阻塞,你有什么更好的插件架构实现的想法吗?

谢谢。

最佳答案

似乎加载插件的任何东西都会像其他任何东西一样引发回调。

PluginManager.loadPlugins(function() { app.listen(3000); });

这样,在插件全部加载完毕之前,应用程序不会开始监听。

关于javascript - 使用 JavaScript/Node.js 实现插件架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11895760/

相关文章:

mysql - Node mysql批量插入带有express数组参数

haskell - Haskell 中的嵌套模式是什么?

java - 如何避免从父类(super class)进行转换?

javascript - Angular 表 ng-repeat

mysql - Node.js-mysql : Bad field Error

javascript - Javascript 中 var name = function() {} 和 function name() {} 有什么区别吗?

javascript - 创建嵌套数组类型的巧妙方法

design-patterns - 测试数据生成器是否应该为其非基元构造默认值?

javascript - 在 Nodejs 中陷入 JSON 嵌套对象和回调之间

javascript - 关于变更事件的 promise