All Projects → Zaid-Ajaj → The Elmish Book

Zaid-Ajaj / The Elmish Book

Licence: other
A practical guide to building modern and reliable web applications in F# from first principles

Programming Languages

elm
856 projects
fsharp
127 projects

Projects that are alternatives of or similar to The Elmish Book

url
Build and parse URLs. Useful for HTTP and "routing" in single-page apps (SPAs)
Stars: ✭ 69 (-70.13%)
Mutual labels:  spa, routing
dowels
🔨 a tiny but powerful javascript library that performs client-side routing, templating, and REST API communication to help you get your single-page web applications running in seconds
Stars: ✭ 13 (-94.37%)
Mutual labels:  spa, routing
bce.design
minimal magic, minimal tooling, essential dependencies, high productivity, no transpilations and no migrations. The Web Components starter ships with integrated lit-html, redux-toolkit and vaadin router components.
Stars: ✭ 67 (-71%)
Mutual labels:  spa, routing
navigation-bar-with-feliz
Modern navigation bar built with Feliz
Stars: ✭ 20 (-91.34%)
Mutual labels:  spa, fable
Url Parser
Parse URLs into nicely structured data
Stars: ✭ 118 (-48.92%)
Mutual labels:  routing, spa
Feliz.Router
A router component for React and Elmish that is focused, powerful and extremely easy to use.
Stars: ✭ 66 (-71.43%)
Mutual labels:  fable, routing
ors-map-client
Openrouteservice API web SPA client using VueJS, Vuetify and Vue2Leaflet
Stars: ✭ 51 (-77.92%)
Mutual labels:  spa, routing
router-example
Use React Router DOM to create a Single Page Application (SPA).
Stars: ✭ 50 (-78.35%)
Mutual labels:  spa, routing
Oho Reader
【停止维护】哦豁阅读器!API源自追书神器,免费使用!填坑完成!使用react
Stars: ✭ 571 (+147.19%)
Mutual labels:  book, spa
Abstract State Router
Like ui-router, but without all the Angular. The best way to structure a single-page webapp.
Stars: ✭ 288 (+24.68%)
Mutual labels:  routing, spa
Navigation
Routing for SPAs, the Elm way
Stars: ✭ 255 (+10.39%)
Mutual labels:  routing, spa
Svelte Navigator
Simple, accessible routing for Svelte
Stars: ✭ 125 (-45.89%)
Mutual labels:  routing, spa
Universal Router
A simple middleware-style router for isomorphic JavaScript web apps
Stars: ✭ 1,598 (+591.77%)
Mutual labels:  routing, spa
Redux Tower
Saga powered routing engine for Redux app.
Stars: ✭ 155 (-32.9%)
Mutual labels:  routing, spa
The Road To Learn React
📓The Road to learn React: Your journey to master plain yet pragmatic React.js
Stars: ✭ 2,605 (+1027.71%)
Mutual labels:  book
Advanced Go Programming Book
📚 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)
Stars: ✭ 16,436 (+7015.15%)
Mutual labels:  book
Go Questions
📖 从问题切入,串连 Go 语言相关的所有知识,融会贯通。 https://golang.design/go-questions
Stars: ✭ 3,415 (+1378.35%)
Mutual labels:  book
Cloudtunes
Web-based music player for the cloud ☁️ 🎶 Play music from YouTube, Dropbox, etc.
Stars: ✭ 2,449 (+960.17%)
Mutual labels:  spa
Jshistory Cn
🇨🇳 《JavaScript 二十年》中文版
Stars: ✭ 3,686 (+1495.67%)
Mutual labels:  book
Functional Light Js
Pragmatic, balanced FP in JavaScript. @FLJSBook on twitter.
Stars: ✭ 14,764 (+6291.34%)
Mutual labels:  book

The Elmish Book

The Elmish Book is a practical guide to building modern and reliable web applications in F# from first principles. We will be using the Fable compiler, which will take our F# code and turn it into JavaScript. This allows our code to run anywhere JavaScript runs, whether it is the browser, Node.js, or other runtimes. Fable is designed with interoperability in mind, which makes it simple to re-use and integrate with the vast ecosystem of JavaScript libraries, as we will see later on in the book.

Our primary focus will be building client applications for the browser. We will start by learning the development workflow around client applications, slowly understanding the tooling and the hybrid nature of Fable projects since we will be both using .NET and Node.js tools for development.

Using the Elmish library, we will build and design our applications following The Elm Architecture: A beautiful pattern for making genuinely modular user interfaces as popularized by the Elm programming language. We will spend a significant portion of the book talking about, understanding, and building applications that follow this architecture starting from scratch until it becomes second nature to the reader, hence the name of this book.

The premise of The Elm Architecture is the ability to build robust and reliable applications: applications that don't fail or break easily. Building a stable structure requires identifying the failure points of that structure and accounting for them. When it comes to web applications, many problems come down to the correct handling of data and syncing it with the user interface. Data can have many failure points, whether it is a failure when being retrieved, a failure when being processed from one form to another, or failure when assuming the data to be available and using it when in fact, it is not. To account for these problems, we will spend a lot of time discussing data modeling and ways to encode the data using types with the help of F#'s powerful type-system while having the compiler at our backs.

The pacing of the book is deliberately slow because learning front-end development can often be overwhelming. That is why each chapter is divided into bite-sized sections that are hopefully easy to understand on their own. These sections include working small samples to demonstrate the various concepts. As you progress through the book, the concepts start to become more apparent as we keep expanding upon the things we learn along the way.

Some parts of the book are opinionated and do not necessarily follow the tutorials and guidelines you have potentially read before. However, this is not to say that you should follow my advice and forget what you already know, it is the opposite: my goal is that you learn a lot and gain more experience to draw your conclusions and understand why one approach is better than the other. That is why I will try my best to explain my train of thought when going through the examples and the way they are implemented.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].