gpt4 book ai didi

javascript - Mithril js - 跨组件通信模式

转载 作者:行者123 更新时间:2023-12-03 11:09:22 25 4
gpt4 key购买 nike

我在这里有一个不同的跨组件通信实现 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]})

主要区别在于组件之间的通信方式。在我的实现中,我决定使用观察者,在文档的实现中,他通过创建纯函数来实现,然后在仪表板的“ View ”函数中使用这些函数,其中正确的参数被传递给自动完成的“ View ”函数功能。

我的问题:

  1. 如果您必须在这两种实现之间进行选择,为什么要选择其中一种?
  2. 在函数式编程模型中,诸如观察者模式之类的 OOP 概念是否会令人不悦?
  3. 是否有更简洁但可扩展的方式在 FP 中/使用不同的模式来实现此目的?

最佳答案

很好的例子。对我来说看起来很简洁。开始输入“j”、“b”或“m”的一些提示将避免需要阅读所有代码或假设示例已损坏;)

对于像仪表板和 subview 这样的中心辐射型 getter/setter 安排,观察者模式只会增加额外的开销,而没有任何解耦的好处,因为仪表板无论如何都必须启动 subview 。

如果“项目” subview 能够观察“用户” subview ,那就更有意义了。这将允许 subview 之间存在复杂且可重用的逻辑,并且带有仅限启动的轻型仪表板。

关于javascript - Mithril js - 跨组件通信模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27681091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com