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

时间:2017-08-21 11:28:59

标签: f# fable-f# elmish

我试图理解Fable-Elmish中mkSimple和mkProgram之间的区别,或者我实际使用的Elmish.WPF。 (有人可能会为elmish.wpf生成一个标签吗?)

我发现Elmish.WPF非常有效,我在制作中使用它,但我现在处于一个我每天都在学习很多的阶段。这个特殊的问题吞噬了我太多的研究时间,所以我很感激一些帮助。

来源中的评论如下所示。

mkSimple:Simple program that produces only new state with 'init' and 'update'.

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

那些命令对哪些有益?我已经在几个地方查看了一些例子,但他们并不清楚我是否可以使用mkSimple和mkProgram一样,这就是我需要知道的。

mkProgram是否公开了mkSimple没有的功能,或者无论我使用哪一个都可以完成所有功能? mkSimple仅用于简单的演示用途,我是否应该将mkProgram用于增长的真实世界应用程序?如果你能同时做到这两点,那么为什么会有差异呢?

1 个答案:

答案 0 :(得分:6)

mkSimple实际上仅用于学习目的。它通过不引入Cmd的想法来帮助新用户进入框架。

如果您查看mkSimple的{​​{3}},您会看到它正在做的就是隐藏Cmd想法(使用Cmd.none)并调用{{ 1}}:

mkProgram

它的起源来自Elm Architecture,后来将简单程序重命名为source

如果您想要编写任何复杂程序,请使用/// 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 } 。如果您只是修补或演示基础知识,可能能够使用mkProgram