Node.js如何实现多态?

时间:2012-08-03 14:35:25

标签: javascript node.js abstraction

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

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

要求:

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

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

1 个答案:

答案 0 :(得分:8)

JavaScript,就像大多数其他脚本语言一样(即没有编译时类型检查)通过duck typing进行多态化。

如果你来自Java-land,你可能正在寻找Dependency Injection,它通常提供超级脱钩。你可以使用google为Node找到一个好的依赖注入框架,比如this one

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

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

我个人可能只使用Coffeescripts inheritancetraits.jsJavascript's builtin prototype chain

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