简单页面应用程序的每个页面作为一个单独的应用程序

Each page of simple page application as a separate app

目前,我无法将我的页面构建为单独的应用程序。我目前的思路是这样的:

有办法实现吗?

好吧,有不同的方法可以实现这一点:

1.一个 Elm 应用程序,每个页面作为一个单独的组件

在那种情况下,您创建一个 "root" elm 模块,它导入您的照片模型、消息、初始化、更新、视图。 你的博客也一样。

那么你有 1 个 elm 应用程序。这是我会采取的方法: 允许您管理全局前端状态,例如在一处管理照片和博客的用户信息。

您的主 elm 文件将如下所示:

import PhotoPage
import BlogPage

type alias Model =
  { photo : PhotoPage.Model
  , blog : BlogPage.Model
  , currentPage : Page
  }

type Page = Home | Blog | Photo

init = 
  { photo = PhotoPage.init
  , blog = BlogPage.init
  , currentPage = Home
  }

type Msg =
  GoHome
  | PhotoMsg PhotoPage.Msg
  | BlogMsg BlogPage.Msg

update msg model =
  case msg of
    PhotoMsg photoMsg ->
      let
        (newPhoto, photoCmd) = PhotoPage.update photoMsg model.photo
      in
        { model | photo = newPhoto }
        ! [ Cmd.map PhotoMsg photoCmd ]

2。完全独立的 elm 应用程序

构建 3 个完全独立的应用程序/网站,每个应用程序/网站都有自己的 index.html,以及自己的 elm 应用程序。

并且您使用默认浏览器导航在不同的 Elm 应用程序之间导航。

如果您有某种方法可以在服务器/会话级别管理全局状态,这可能会奏效。

您的 home.elm 文件中的视图函数可能如下所示:

view model =
  div []
   [ h1 [] [ text "I am the homepage"]
   , a [ href "/photo" ] [ text "go to photo page" ]
   ]