2017-09-17 19 views
1

我试图分离榆树项目中的文件,因为保留全局模型,消息等内容只是一团糟。 这是我迄今为止的尝试: enter image description hereELM项目扩展:分离消息/更新

因此,有一些全局文件,然后标题有它自己的文件。不过,我不断收到错误,导入Header.View当进入全球视野:The 1st and 2nd entries in this list are different types of values.哪一种是有道理的:

The 1st entry has this type: 
Html Header.Messages.Msg 

But the 2nd is: 
Html Msg 

所以,我的问题是,所有的消息是否(从我的所有模块,如标题)需要以某种方式在全球Messages.elm?或者有更好的方法来做到这一点?

+1

如果你沿着这条路走下去代码将很难重构,编译器会变慢。分割视图很好,但考虑尽可能长时间地将消息和模型保留在根中。 – Sebastian

+0

嘿@塞巴斯蒂安,你能解释为什么只保留在根目录下更好?比方说,我有50个不同的组件,而且似乎是一个模型文件最终会变得很长,而最终每个组件都有文件夹。 – Ilya

回答

1

我的建议是保留消息并在1个文件中更新,直到感觉不舒服为止(因为您要决定这意味着多少行代码 - 有关模块流程的更多信息,请参阅Evan的Elm Europe talk)。如果你想打破一些东西,在主

type Msg 
    = HeaderMsg Header.Msg 
    | .... 

定义一个新的消息,然后使用您的更新功能Cmd.map HeaderMsgHtml.map HeaderMsg在您的视图功能来连接你的子组件

+0

或者可能考虑在库中使用'Html msg'类型签名? – Anzel

+0

嗨@Simon,我接受了你的回答,因为它帮助我实现了目标。但是,你能否详细说明一下,或者指引我走向正确的方向,为什么要保存在一个文件中更好? – Ilya

+1

将所有内容保存在一个文件中并不是更好,但在榆树中,您不应该感到需要打破多个文件中的所有内容 - 请参阅添加到答案的链接 –