Node.js如何实现多态?
我正在尝试使用node.js和其他相关技术来实现一个应用程序。 从java的标题多态而自然,但对于古典程序员节点工作不同。
应用程序将在用户提供的运行时加载新代码。 为了让主核心使用这个代码,我们需要就某种约定达成一致。 知道新节点是如何我没有感到惊讶,我没有find答案。 问题是这个问题在JS中也相当模糊。
要求:
- 强烈的解耦。
- 在运行时加载新的代码。
- 该解决scheme应该是适用的,所以我可以尽可能多地与浏览器分享代码。
更新:
- 我在做鸭子打字的时候,我也遇到了Clojure关于基于协议的实现的想法。
- 我将不胜感激在答案中的一些代码。
JavaScript,就像大多数其他脚本语言(即没有编译时types检查)通过鸭子打字来进行多态。
如果您来自Java-land,您可能正在寻找通常提供超级解耦的dependency injection 。 你可以使用google来为Nodefind一个好的dependency injection框架,就像这样 。
尽pipe如此,你可能只是做一个单一的Javascript / Coffeescript文件,所有的接线和configuration加载。
由于Javascript的灵活性,几乎所有forms的多态已经被实现(特征,接口,inheritance,原型)。 每个都有优点/缺点,但几乎所有的运行时检查(如果有的话),而不是编译时间。
就个人而言,我可能只会使用Coffeescriptsinheritance , traits.js或Javascript的内置原型链 。
编辑:但是,因为你在谈论允许用户扩展系统,那么callback和/或自定义事件是首选的方法(即更高阶的function编程和事件总线 )。 如果你正在寻找像插件系统一样的东西,那么loader-js看起来相当完整(@Larry Battle的帽子尖端)。