如何将我的Elm视图代码分解为单独的文件?

时间:2017-11-27 22:42:35

标签: refactoring elm

到目前为止,我的所有视图代码仍在我的主文件Main.elm中。在该文件中,它是相对良好的因素,视图的不同部分被适当地分解。

我的问题:我真的想把它分成单独的文件,例如: - Views/Header.elm - Views/InfoPage.elm - Views/Footer.elm - 等等

但我真的不清楚如何做到这一点。当然,我可以制作不同的文件并导入/导出我需要的功能。使用非常简单的视图(例如页脚)并不困难,但我很快遇到了更复杂的view s 的问题,其中大多数都包含app逻辑,即调用更新函数。当然,如果我然后将Msg导入到我的单独视图文件中,那么我将获得循环依赖。如果这是一个天真的问题,请道歉,但我该如何解决这个问题呢?我只是希望能够在不同的文件中使用不同的页面部分,这样我就可以更容易地进行导航,而不是永久滚动。

我已经搜索了一些关于重构Elm应用程序(for example)的帖子,但没有专门针对视图代码。谁能给我一些指示?是否不可能在不考虑其使用的应用程序逻辑的情况下分解视图代码? (如果那个应用程序逻辑也被用在其他地方呢?)我真的很感激这里的一些帮助。

1 个答案:

答案 0 :(得分:0)

您可以按如下方式组织依赖项:

      Model.elm (includes Model and Msg)
          ^        ^
          |        |
      View.elm  Update.elm
          ^        ^
          |        |
           Main.elm 

你说你遇到了更复杂的观点问题,其中大多数都包含app逻辑,即调用更新函数。"但是视图不应包含应用程序逻辑,也不要调用更新功能。视图只需要声明用于处理各种事件的Msg构造函数,因此视图和更新完全解耦。