Elm 项目缩放:分离 Messages/Updates

Elm project scaling: separating Messages/Updates

我正在尝试分离 Elm 项目中的文件,因为将所有内容都保留在全局模型、消息等中只会一团糟。 到目前为止,这是我的尝试方式:

所以,有一些全局文件,然后Header有自己的文件。但是,在将 Header.View 导入我的全局视图时,我不断出错:

The 1st and 2nd entries in this list are different types of values.

哪种说得通:

所以,我的问题是所有消息(来自我的所有模块,如 Header)是否需要在全局 Messages.elm 中以某种方式组合?或者有更好的方法吗?

我的建议是将消息和更新保存在 1 个文件中,直到感觉不舒服为止(由您决定这意味着多少行代码 - 请参阅 Evan 的 Elm Europe talk 以了解有关模块流程的更多信息)。当你想打破某些东西时,在 Main

中定义一条新消息
type Msg 
    = HeaderMsg Header.Msg 
    | ....

然后在更新函数中使用 Cmd.map HeaderMsg 并在视图函数中使用 Html.map HeaderMsg 来连接子组件