Node.js如何实现多态?

我正在尝试使用node.js和其他相关技术来实现一个应用程序。 从java的标题多态而自然,但对于古典程序员节点工作不同。

应用程序将在用户提供的运行时加载新代码。 为了让主核心使用这个代码,我们需要就某种约定达成一致。 知道新节点是如何我没有感到惊讶,我没有find答案。 问题是这个问题在JS中也相当模糊。

要求:

  1. 强烈的解耦。
  2. 在运行时加载新的代码。
  3. 该解决scheme应该是适用的,所以我可以尽可能多地与浏览器分享代码。

更新:

  1. 我在做鸭子打字的时候,我也遇到了Clojure关于基于协议的实现的想法。
  2. 我将不胜感激在答案中的一些代码。

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的帽子尖端)。

Interesting Posts