Node.js如何实现多态性
Node.js how to implement polymorphism?
我正在尝试使用node.js和其他相关技术来实现一个应用程序。从java出发,多态性很自然,但对于经典程序员来说,节点的工作方式不同。
应用程序将在用户提供的运行时加载新代码。为了让主要核心使用这个代码,"我们"需要就某种约定达成一致。知道Node有多新,我并不感到惊讶,因为我没有找到答案。问题是这个问题在JS中也相当模糊。
要求:
- 强有力的脱钩
- 在运行时加载新代码
- 该解决方案应该适用,这样我就可以与浏览器共享尽可能多的代码
更新:
- 我确实摆弄过鸭子类型,我也遇到过Clojure关于基于协议的实现的想法
- 我很感激答案中的一些代码
JavaScript,就像大多数其他脚本语言一样(即没有编译时类型检查),通过鸭子类型来实现多态性。
如果你来自Java领域,你可能正在寻找依赖注入,它通常提供超级解耦。您可能可以使用谷歌为Node找到一个好的依赖注入框架,比如这个。
尽管说实话,您可能只需要制作一个Javascript/Coffeescription文件来完成所有的连接和配置加载。
由于Javascript的灵活性,几乎实现了每一种形式的多态性(特性、接口、继承、原型)。每种方法都有其优点/缺点,但几乎都是运行时检查(如果有的话),而不是编译时。
就我个人而言,我可能只会使用Coffeescriptions继承、traits.js或Javascript的内置原型链。
编辑:但是,由于您谈论的是允许用户扩展系统,因此回调和/或自定义事件是首选方法(即高阶功能编程和事件总线)。如果你正在寻找像插件系统这样实质性的东西,那么loader js看起来相当完整(向@Larry Battle致敬)。
相关文章:
- Rails——处理多态关联上的Ajax destroy调用
- 可以使用属性赋值实现多个函数
- 为什么JavaScript中存在单态和多态性问题
- 如何在高图表中实现多点数据选择
- Angular实现多搜索过滤器
- Node.js如何实现多态性
- React/Redux,使用Redux-Thunk实现多项操作
- Rails使用ajax调用更新多态对象的表部分
- JavaScript中的原型继承是否演示了类型多态性
- JavaScript中的多态性具有不同的构造函数
- 我应该在javascript中使用多态性吗
- AngularJS如何实现多态性/依赖性注入(最佳实践)
- javascript中的多级多态性,多态对象
- JavaScript对OO多态性的支持
- TypeScript中的f界多态性是什么?
- Swagger参数多态性
- 打印稿多态性
- Javascript中不支持参数多态性(泛型编程)
- 在Javascript中实现多态性——会是什么样子?
- 多态性变量继承