【发布时间】:2014-12-28 22:10:19
【问题描述】:
我在这里http://jsfiddle.net/c641oog2/ 的跨组件通信实现与这里描述的不同:http://lhorie.github.io/mithril/components.html#librarization。目标是创建一个易于集成和可扩展(可在其他组件中重用)的组件,即库化。
我的代码的主要部分:
var autocompleter = function(options) {
...
autocompleter.vm = {
list: m.prop(options.list || []),
observers: m.prop(options.observers || []),
...
select: function(item) {
for(observer in autocompleter.vm.observers()) {
autocompleter.vm.observers()[observer](item); //notify all observers of selection
}
}
//initialization later on...
this.userAC = new autocompleter({list: this.users(), observers: [this.selectedUser]})
主要区别在于组件之间的通信方式。在我的实现中,我决定使用观察者,在文档的实现中,他通过创建纯函数来实现,然后在仪表板的“视图”函数中使用这些函数,其中正确的参数被传递给自动完成的“视图”函数功能。
我的问题:
- 如果您必须在这两种实现之间进行选择,为什么要选择其中一种?
- 在函数式编程模型中,OOP 概念(例如观察者模式)是否令人不悦?
- 是否有更简洁但可扩展的方式在 FP 中/使用不同的模式来实现?
【问题讨论】:
标签: javascript functional-programming mithril.js