【问题标题】:Does mkProgram expose more functionality than mkSimple?mkProgram 是否提供比 mkSimple 更多的功能?
【发布时间】:2018-01-29 11:04:40
【问题描述】:

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

我发现 Elmish.WPF 非常有效,我在生产中使用它,但我处于一个每天仍在学习很多东西的阶段。这个特殊的问题占用了我太多的研究时间,因此我将不胜感激。

源码中的cmets长这样。

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 用于增长的现实世界应用程序?如果您可以同时使用两者,那么为什么会有差异?

【问题讨论】:

    标签: f# fable-f# elmish


    【解决方案1】:

    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

    【讨论】:

    • 非常感谢。我认为你给我带来了巨大的飞跃,因为我相信我下一个挑战的答案在于利用这些命令,现在我将切换到 mkProgram 并了解它是如何工作的。
    猜你喜欢
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多