简单页面应用程序的每个页面作为一个单独的应用程序
Each page of simple page application as a separate app
目前,我无法将我的页面构建为单独的应用程序。我目前的思路是这样的:
App
/ Main
文件是提供路由的引导程序。
- 博客是一个独立的应用程序,有自己的更新、模型和 REST 调用。
- 当切换到另一条路线(例如相册)时,它将启动另一个 Elm 应用程序,它有自己的更新、模式等。
有办法实现吗?
好吧,有不同的方法可以实现这一点:
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" ]
]
目前,我无法将我的页面构建为单独的应用程序。我目前的思路是这样的:
App
/Main
文件是提供路由的引导程序。- 博客是一个独立的应用程序,有自己的更新、模型和 REST 调用。
- 当切换到另一条路线(例如相册)时,它将启动另一个 Elm 应用程序,它有自己的更新、模式等。
有办法实现吗?
好吧,有不同的方法可以实现这一点:
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" ]
]