使用 JavaScript/Node.js 实现插件架构
Implement plugin-in architecture with JavaScript/Node.js
下面是一个简单的节点.js使用express
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('Hello World');
});
app.listen(3000);
我想实现一个插件架构,比如默认有一个名为plugins
的文件夹,它们在节点启动时自行注册.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); });
这样,在插件全部加载之前,应用程序不会开始侦听。
你应该阻止。它只会影响应用程序的"开始时间",而不会影响"运行时间"。
- 使用
fs.readdirSync
获取plugins
目录中的所有文件 - 将它们编写为模块并全部
require()
(require
同步) - 将它们插入您的
Server
相关文章:
- 实现简单的javascript转盘.(无插件)
- 使用 JavaScript/Node.js 实现插件架构
- 由于jQuery问题,在实现Disqus插件时出现问题
- 如何正确实现Jquery移动路由器插件
- 改进插件体系结构的实现
- 实现流沙jquery插件
- 实现水平移动和缩放UI效果-可能的jQuery插件(?)
- 设计模式以实现依赖于其他插件的插件
- 如何实现无限滚动插件
- 尝试实现jQuery插件,失败
- 为 Firefox 扩展实现一个 Javascript 插件系统
- 如何实现一个插件,它只在需要时修改原始模块
- ExtJS 4 - 实现其他人的用户扩展/插件
- 使用 JS 实现 HTML 最小化器插件
- 我的拉斐尔“文本溢出:省略号”实现插件是矫枉过正吗?
- Jquery为我的插件实现了一个成功和错误回调,该插件与AJAX一起工作
- 使用UI选项卡插件正确实现JQuery谷歌地图插件
- 同位素插件:如何实现'insertAfter”;方法
- 在服务器端用AngularJS和Django REST实现一个表单验证插件
- 如何在我的服务器中实现jQuery插件