mkProgram 是否公开了比 mkSimple 更多的功能?

Does mkProgram expose more functionality than mkSimple?

我想了解 Fable-Elmish 中的 mkSimple 和 mkProgram 之间的区别,或者我实际使用的 Elmish.WPF。 (有人可以为 elmish.wpf 制作标签吗?)

我发现 Elmish.WPF 非常有效,我在生产中使用它,但我正处于每天仍在学习很多东西的阶段。这个特别的问题占用了我太多的研究时间,所以我希望能得到一些帮助。

源中的评论是这样的。

mk简单:Simple program that produces only new state with 'init' and 'update'.

mk程序:Typical program, new commands are produced by 'init' and 'update' along with the new state.

那么这些命令有什么用呢?我看过几个地方的示例,但它们并没有提供太多线索,说明我是否可以像使用 mkProgram 一样使用 mkSimple 做同样的事情,而这正是我需要知道的。

mkProgram 是否公开了一些 mkSimple 没有的功能,或者我使用哪个都可以完成吗?mkSimple 仅用于简单的演示使用,我应该将 mkProgram 用于现实世界的应用程序增长?如果你可以用两者做任何事情,那为什么会有不同?

mkSimple真的只是为了学习。它通过不引入 Cmd 的想法来帮助新用户轻松进入框架。

如果您查看 mkSimplesource,您会发现它所做的只是隐藏 Cmd 想法(通过使用 Cmd.none)并调用mkProgram:

/// Simple program that produces only new state with `init` and `update`.
let mkSimple 
    (init : 'arg -> 'model) 
    (update : 'msg -> 'model -> 'model)
    (view : 'model -> Dispatch<'msg> -> 'view) =
    { init = init >> fun state -> state,Cmd.none
      update = fun msg -> update msg >> fun state -> state,Cmd.none
      view = view
      setState = fun model -> view model >> ignore
      subscribe = fun _ -> Cmd.none
      onError = onError }

它起源于 Elm 架构,后来将简单程序重命名为 beginnerProgram

如果您想编写任何复杂的程序,请使用mkProgram。如果您只是修补或演示基础知识,您 可能 能够使用 mkSimple.