Node.js如何实现多态?

qba*_*ler 5 javascript abstraction node.js

我正在尝试使用node.js和其他相关技术来实现应用程序.从java土地多态性开始但是很自然,但对于经典程序员节点的工作方式不同.

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

要求:

  1. 强烈的脱钩.
  2. 在运行时加载新代码.
  3. 该解决方案应该适用,因此我可以与浏览器共享尽可能多的代码.

更新:

  1. 我确实摆弄了鸭子打字,我也遇到了Clojure关于基于协议的实现的想法.
  2. 我会很感激答案中的一些代码.

Ada*_*ent 8

JavaScript,就像大多数其他脚本语言一样(即没有编译时类型检查)通过duck typing来实现多态性.

如果你来自Java-land,你可能正在寻找依赖注入,它通常提供超级解耦.您可以使用谷歌为Node找到一个好的依赖注入框架,就像这个.

虽然如实,你可以制作一个单一的Javascript/Coffeescript文件来完成所有的布线和配置加载.

由于Javascript的灵活性,几乎每个表单都都实现了多态(traits,interfaces,inheritance,prototypes).每个都有它们的优点/缺点,但几乎所有都是运行时检查(如果有的话)而不是编译时间.

就个人而言,我可能只使用Coffeescripts继承,traits.jsJavascript的内置原型链.

编辑:但是,由于您正在讨论允许用户扩展系统,因此回调和/或自定义事件是首选方法(即高阶函数编程和事件总线).如果你正在寻找像插件系统那样重要的东西,那么loader-js看起来相当完整(对于@Larry Battle来说,这个问题已经过去了).