我正在尝试使用node.js和其他相关技术来实现应用程序。从java土地多态性开始但是很自然,但对于经典程序员节点的工作方式不同。
应用程序将在用户提供的运行时加载新代码。为了让主要核心使用这个代码“我们”需要就某种约定达成一致。知道新节点是什么我并没有感到惊讶,我没有找到答案。问题是这个问题在JS中也相当模糊。
要求:
更新:
答案 0 :(得分:8)
JavaScript,就像大多数其他脚本语言一样(即没有编译时类型检查)通过duck typing进行多态化。
如果你来自Java-land,你可能正在寻找Dependency Injection,它通常提供超级脱钩。你可以使用google为Node找到一个好的依赖注入框架,比如this one。
虽然如实,你可以制作一个单一的Javascript / Coffeescript文件来完成所有的布线和配置加载。
由于Javascript的灵活性,几乎每个表单都都实现了多态(traits,interfaces,inheritance,prototypes)。每个都有它们的优点/缺点,但几乎所有都是运行时检查(如果有的话)而不是编译时间。
我个人可能只使用Coffeescripts inheritance,traits.js或Javascript's builtin prototype chain。
编辑:但是,由于您正在讨论允许用户扩展系统,因此回调和/或自定义事件是首选方法(即高阶函数编程和event-bus)。如果你正在寻找像插件系统那样重要的东西,那么loader-js看起来相当完整(对@Larry Battle来说是最重要的)。