6

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

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

要求:

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

更新:

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

1 回答 1

8

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

如果您来自 Java 领域,您可能正在寻找通常提供超级解耦的依赖注入。您可能可以使用 google 为 Node 找到一个好的依赖注入框架,比如这个

虽然说实话,您可能只需要制作一个 Javascript/Coffeescript 文件来完成所有接线和配置加载。

由于 Javascript 的灵活性,几乎所有形式的多态性都已实现(特征、接口、继承、原型)。每个都有其优点/缺点,但几乎所有都是运行时检查(如果有的话)而不是编译时间。

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

编辑:但是,由于您正在谈论允许用户扩展系统,因此回调和/或自定义事件是首选方法(即高阶函数式编程和事件总线)。如果您正在寻找像插件系统这样的实质内容,那么loader-js看起来相当完整(向@Larry Battle 致敬)。

于 2012-08-03T14:39:03.743 回答