elm-spa-example | elm v0 | Single Page Application library
kandi X-RAY | elm-spa-example Summary
kandi X-RAY | elm-spa-example Summary
elm v0.17 single page application (SPA) example. Read about this app in the post Faithful Elm and the Amazing Router.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of elm-spa-example
elm-spa-example Key Features
elm-spa-example Examples and Code Snippets
Community Discussions
Trending Discussions on elm-spa-example
QUESTION
I'm building a single page application in Elm and was having difficulty deciding how to split my code in files.
I ended up splitting it using 1 module per page and have Main.elm
convert the Html
and Cmd
emitted by each page using Cmd.map
and Html.map
.
My issue is that the documentation for both Cmd.map and Html.map says that :
This is very rarely useful in well-structured Elm code, so definitely read the section on structure in the guide before reaching for this!
I checked the only 2 large apps I'm aware of :
- elm-spa-example uses Cmd.map (https://github.com/rtfeldman/elm-spa-example/blob/cb32acd73c3d346d0064e7923049867d8ce67193/src/Main.elm#L279)
- I was not able to figure out how https://github.com/elm/elm-lang.org deals with the issue.
Also, both answers to this stackoverflow question suggest using Cmd.map
without second thoughts.
Is Cmd.map the "right" way to split a single page application in modules ?
...ANSWER
Answered 2020-Aug-23 at 14:04I think sometimes you just have to do what's right for you. I used the Cmd.map
/Sub.map
/Html.map
approach for an application I wrote that had 3 "pages" - Initializing, Editing and Reporting.
I wanted to make each of these pages its own module as they were relatively complicated, each had a fair number of messages that are only relevant to each page, and it's easier to reason about each page independently in its own context.
The downside is that the compiler won't prevent you from receiving the wrong message for a given page, leading to a runtime error (e.g., if the application receives an Editing.Save
when it is in the Reporting
page, what is the correct behavior? For my specific implementation, I just log it to the console and move on - this was good enough for me (and it never happened anyway); Other options I've considered include displaying a nasty error page to indicate that something horrible has happened - a BSOD if you will; Or to simply reset/reinitialize the entire application).
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install elm-spa-example
NodeJs (and npm)
Elm (e.g. npm install -g elm@0.17.0)
Compass (for SASS) (gem update --system && gem install compass)
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page