我试图理解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用于增长的真实世界应用程序?如果你能同时做到这两点,那么为什么会有差异呢?
答案 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
。