さて、この達成するためにさまざまな方法があります。
1つエルムアプリは、その場合には別のコンポーネント
としてそれぞれのページで、あなたは一つの「ルート」ニレモジュールを作成し、モデル、メッセージ、初期化、更新、ビューをインポートします。 あなたのブログでも同じです。
次に1つのelmアプリがあります。これは私が取るアプローチです: グローバルなフロントエンド状態を管理することができます.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アプリ。
デフォルトのブラウザナビゲーションを使用して、さまざまなElmアプリ間をナビゲートします。
これは、サーバー/セッションレベルでグローバルな状態を管理する方法がある場合に機能します。あなたのhome.elmファイル内
あなたのビュー機能は、このようなものを見ることができる:
view model =
div []
[ h1 [] [ text "I am the homepage"]
, a [ href "/photo" ] [ text "go to photo page" ]
]
ないあなたがここに実現したいのかを確認します(これはあなたが意味ルーティングすべてのフロントエンドであります?)。とにかく、それぞれ独自のurl、独自のindex.html、独自のmain.elm、独自のモデル、アップデート、RESTを持つ完全に独立した3種類のelmアプリケーションを持つことができます。次に、ユーザーは、他のページの(外部)URLを持つリンクをレンダリングするだけで、あるアプリから別のアプリにナビゲートできます。それはあなたが探しているものですか?または、3つのアプリを同時に実行して表示する必要がありますか? – wintvelt
@wintveltあなたは正しい道を歩いています。私は*すべてのページを分離したいと思っています。ブログがフォトアルバムとインターレースされる必要がないからです。どのように達成できるかについての文献はありますか? – DevNebulae