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.
哪种说得通:
第一个条目有这种类型:
Html Header.Messages.Msg
但是第二个是:
Html Msg
所以,我的问题是所有消息(来自我的所有模块,如 Header)是否需要在全局 Messages.elm
中以某种方式组合?或者有更好的方法吗?
我的建议是将消息和更新保存在 1 个文件中,直到感觉不舒服为止(由您决定这意味着多少行代码 - 请参阅 Evan 的 Elm Europe talk 以了解有关模块流程的更多信息)。当你想打破某些东西时,在 Main
中定义一条新消息
type Msg
= HeaderMsg Header.Msg
| ....
然后在更新函数中使用 Cmd.map HeaderMsg
并在视图函数中使用 Html.map HeaderMsg
来连接子组件
我正在尝试分离 Elm 项目中的文件,因为将所有内容都保留在全局模型、消息等中只会一团糟。 到目前为止,这是我的尝试方式:
所以,有一些全局文件,然后Header有自己的文件。但是,在将 Header.View
导入我的全局视图时,我不断出错:
The 1st and 2nd entries in this list are different types of values.
哪种说得通:
第一个条目有这种类型:
Html Header.Messages.Msg
但是第二个是:
Html Msg
所以,我的问题是所有消息(来自我的所有模块,如 Header)是否需要在全局 Messages.elm
中以某种方式组合?或者有更好的方法吗?
我的建议是将消息和更新保存在 1 个文件中,直到感觉不舒服为止(由您决定这意味着多少行代码 - 请参阅 Evan 的 Elm Europe talk 以了解有关模块流程的更多信息)。当你想打破某些东西时,在 Main
中定义一条新消息type Msg
= HeaderMsg Header.Msg
| ....
然后在更新函数中使用 Cmd.map HeaderMsg
并在视图函数中使用 Html.map HeaderMsg
来连接子组件