插件的 JavaScript 模式
Javascript pattern for plugins?
[我是Javascript的新手,所以慢慢来。
我正在 node 中开发一个应用程序.js该应用程序将有一个插件列表。每个"插件"都应该是一个函数(或 2),可以获取字符串并对其进行处理。应用应依次调用每个插件并向其传递字符串。根据结果,它可能会调用该插件中的另一个函数等......
在Javascript中设计它的最佳方法是什么?我不介意必须修改应用程序以添加其开发的每个插件,但宁愿避免这样做很多。
现在我只是在考虑为每个模块创建一个模块,然后在主应用程序中"需要"它并调用该函数,但这似乎很笨拙,原因有几个:(a) 我需要为每个新插件安静地更改父应用程序,(b) 没有我可以在插件上强制执行的接口。我有点希望有某种合同可以迫使插件尊重。
您可以列出插件目录,并需要每个文件。如果每个文件都向现有对象添加一个函数(例如,myapp.plugins
),则只需forEach
该对象并调用每个函数即可。如果不做一些奇怪的事情,比如调用 AST 解析器,你就无法真正在代码中强制执行合约;你最好对插件进行单元测试,以确保它们独立工作。
编辑:
您能否详细说明一下这部分:"如果每个文件向现有对象(例如myapp.plugins)添加一个函数,则可以只针对每个对象并调用每个函数。
var invokePlugins = function() {
var args = arguments.slice(0);
myapp.plugins.forEach(function(plugin) {
plugin.apply(plugin, args);
});
}
invokePlugins("this", "gets", "passed to", "each plugin");
你的架构不清楚,所以这只是你能做什么的一个非常粗略的想法。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 我是否可以检测到javascript正在被卸载(作为调试模式)
- 包含圆括号的JavaScript Regex模式
- 用于操纵DOM API的Javascript设计模式
- 用javascript创建一个看起来正常分布的模式
- 揭示模块模式(JavaScript) - 这无法访问私有方法
- 匹配每个字符,直到在行首出现模式(JavaScript)
- 用于处理成功、失败、重试的异步请求的设计模式?(JavaScript)
- 模块模式javascript不是函数
- 从自定义模块模式Javascript库调用XMLHttpRequest时不会发生任何事情
- 浏览器中的观察者模式javascript:订阅事件"添加了Dom元素“;并处理这个元素
- IE11在Iframe下的怪癖模式-javascript错误
- 返回具有链接模式javascript的项
- 命令模式 JavaScript 中的执行函数
- gsp下拉值返回NaN在IE7文档模式(javascript)
- 动态模式Javascript
- 保持服务器时间,即使在离线模式(javascript/html5)
- 我如何专业地构建我的模块模式Javascript项目
- 怪癖模式 - JavaScript 不会更新表单选择选项
- 设计模式- JavaScript.安全提取深层(可能不存在)对象属性的通用函数