8

我试图了解我实际使用的 Fable-Elmish 或 Elmish.WPF 中的 mkSimple 和 mkProgram 之间的区别。(有人可以为 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.

那么这些命令有什么用呢?我已经在几个地方查看了示例,但它们并没有提供太多线索,我是否可以使用 mkSimple 和使用 mkProgram 做同样的事情,这就是我需要知道的。

mkProgram 是否公开了一些 mkSimple 没有的功能,或者我使用的任何一个都可以完成?mkSimple 是否仅用于简单的演示使用,我是否应该将 mkProgram 用于增长的实际应用程序?如果您可以同时使用两者,那么为什么会有区别?

4

1 回答 1

8

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

如果您查看 的来源mkSimple您会发现它所做的只是隐藏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.

于 2017-08-21T12:12:37.770 回答