目前,我无法将网页结构化为单独的应用。我目前的思维方式如下:
App
/ Main
文件是提供路由的引导程序。有没有办法实现这个目标?
答案 0 :(得分:6)
嗯,有不同的方法来实现这一目标:
<强> 1。一个Elm应用程序,每个页面作为一个单独的组件
在这种情况下,您创建一个“根”elm模块,它导入您的照片Model,Msg,init,update,view。 你的博客也一样。
然后你有1个榆树应用程序。这是我要采取的方法: 允许您管理全局前端状态,例如在一个位置以及照片和博客中的用户信息。
你的主榆文件看起来像这样:
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。完全独立的榆树应用
构建3个完全独立的应用/网站,每个应用/网站都有自己的index.html和自己的榆树应用。
您可以使用默认浏览器导航在不同的Elm应用之间导航。
如果你有办法在服务器/会话级别管理全局状态,这可能会有效。
您home.elm文件中的视图功能可能如下所示:
view model =
div []
[ h1 [] [ text "I am the homepage"]
, a [ href "/photo" ] [ text "go to photo page" ]
]