# lhorie/mithril.js

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/lhorie-mithril-js).**

14,490 stars · 922 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/lhorie/mithril.js
- Homepage: https://mithril.js.org
- awesome-repositories: https://awesome-repositories.com/repository/lhorie-mithril-js.md

## Description

Mithril.js is a JavaScript framework for building single page applications. It functions as a virtual DOM library and reactive UI framework, providing a system to synchronize application state with visual elements to ensure interfaces update instantly.

The toolkit includes a built-in client side router that maps browser URL paths to specific components without reloading the page. It also features an integrated HTTP request client for performing asynchronous network calls to remote APIs for data retrieval and transmission.

The framework covers broad capabilities for frontend development, including reactive state management, interactive user interface design, and virtual DOM state synchronization.

## Tags

### Software Engineering & Architecture

- [Single Page Applications](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/application-architecture-patterns/single-page-applications.md) — Functions as a framework for building web applications that load a single document and update content dynamically. ([source](https://github.com/lhorie/mithril.js#readme))
- [Dispatch Table Patterns](https://awesome-repositories.com/f/software-engineering-architecture/dispatch-table-patterns.md) — Uses a configuration table to dispatch URL paths to the corresponding component constructors.
- [Closure-Based State Encapsulations](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/scope-and-hierarchy-management/closure-based-state-encapsulations.md) — Uses function closures to encapsulate component state and manage setup and teardown lifecycles.

### Web Development

- [Virtual DOM Reconciliation](https://awesome-repositories.com/f/web-development/virtual-dom-reconciliation.md) — Optimizes browser updates by calculating the minimal difference between two virtual DOM trees.
- [Asynchronous API Clients](https://awesome-repositories.com/f/web-development/asynchronous-api-clients.md) — Integrates asynchronous API clients to exchange data between the web client and remote servers.
- [Client-side Routing](https://awesome-repositories.com/f/web-development/client-side-routing.md) — Implements a client-side routing system for managing navigation and view transitions in SPAs.
- [HTTP Clients](https://awesome-repositories.com/f/web-development/http-clients.md) — Ships an integrated HTTP request client for performing asynchronous network calls to remote APIs. ([source](https://github.com/lhorie/mithril.js#readme))
- [Hyperscript Document Construction](https://awesome-repositories.com/f/web-development/hyperscript-document-construction.md) — Utilizes a hyperscript-style function to generate virtual DOM nodes from JavaScript objects.
- [JavaScript SPA Frameworks](https://awesome-repositories.com/f/web-development/javascript-spa-frameworks.md) — Provides a complete toolkit for building single-page applications using a virtual DOM.
- [Remote Data Fetching](https://awesome-repositories.com/f/web-development/remote-data-fetching.md) — Provides utilities for retrieving and parsing data from remote network resources asynchronously. ([source](https://github.com/lhorie/mithril.js#readme))
- [Routing Configurations](https://awesome-repositories.com/f/web-development/routing-configurations.md) — Provides a central routing table to map URL patterns to component constructors for client-side navigation.
- [Virtual DOM Reconciliation](https://awesome-repositories.com/f/web-development/virtual-dom-reconciliation/virtual-dom-reconciliation.md) — Optimizes browser DOM updates by minimizing direct manipulation through virtual DOM reconciliation.
- [Automatic Redraw Integration](https://awesome-repositories.com/f/web-development/asynchronous-state-managers/promise-based-state-resolution/automatic-redraw-integration.md) — Triggers the automatic redraw cycle immediately upon the resolution of asynchronous network promises.
- [Client-Side Routers](https://awesome-repositories.com/f/web-development/client-side-routers.md) — Includes a built-in router for managing navigation and mapping URL paths to specific components.
- [HTTP Request Clients](https://awesome-repositories.com/f/web-development/http-request-clients.md) — Ships an integrated HTTP request client for performing asynchronous network calls to remote APIs.

### Networking & Communication

- [Promise-Based HTTP Clients](https://awesome-repositories.com/f/networking-communication/promise-based-http-clients.md) — Includes a built-in HTTP client that returns promises to handle asynchronous network requests.

### User Interface & Experience

- [HTML Element Bindings](https://awesome-repositories.com/f/user-interface-experience/html-element-bindings.md) — Creates virtual nodes through a lightweight hyperscript function mapping objects to HTML elements.
- [Navigation Routing](https://awesome-repositories.com/f/user-interface-experience/navigation-routing.md) — Manages application navigation paths to swap visible content dynamically on the client side. ([source](https://github.com/lhorie/mithril.js#readme))
- [Reactive State Management](https://awesome-repositories.com/f/user-interface-experience/reactive-state-management.md) — Provides a system for automatically synchronizing UI elements with underlying data state.
- [Reactive State Managers](https://awesome-repositories.com/f/user-interface-experience/reactive-state-managers.md) — Synchronizes application data across components via an automatic redraw and change tracking system. ([source](https://github.com/lhorie/mithril.js#readme))
- [Reactive UI Frameworks](https://awesome-repositories.com/f/user-interface-experience/reactive-ui-frameworks.md) — Offers a framework for building interfaces that automatically update based on state changes.
- [Reactive User Interfaces](https://awesome-repositories.com/f/user-interface-experience/reactive-user-interfaces.md) — Implements interfaces that automatically synchronize their visual state with asynchronous data streams and user input.
- [View-to-URL Mapping](https://awesome-repositories.com/f/user-interface-experience/tab-selection-mechanisms/url-synced-tabs/view-to-url-mapping.md) — Maps application views to URL paths to manage navigation without reloading the page. ([source](https://github.com/lhorie/mithril.js#readme))
- [User Interface Frameworks](https://awesome-repositories.com/f/user-interface-experience/user-interface-frameworks.md) — Offers a comprehensive framework for composing interactive pages that link data states to visual elements. ([source](https://github.com/lhorie/mithril.js#readme))
- [Virtual DOM Engines](https://awesome-repositories.com/f/user-interface-experience/virtual-dom-engines.md) — Implements a virtual DOM engine that manages UI updates through the reconciliation of virtual element trees.
- [Dirty Checking Mechanisms](https://awesome-repositories.com/f/user-interface-experience/data-binding/dirty-checking-mechanisms.md) — Implements an automatic redraw system based on dirty-checking to synchronize the virtual DOM with application state.
- [Interactive Interface Design](https://awesome-repositories.com/f/user-interface-experience/interactive-graphics/interactive-interface-design.md) — Enables the design of interactive interfaces where visual elements update instantly in response to state changes.

### Part of an Awesome List

- [Frontend Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/frontend-frameworks.md) — A client-side MVC framework for web applications.
- [Web Frameworks](https://awesome-repositories.com/f/awesome-lists/devtools/web-frameworks.md) — Mithril is a client-side MVC framework (Light-weight, Robust, Fast).
