# sorrycc/dva

**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/sorrycc-dva).**

16,163 stars · 3,110 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/sorrycc/dva
- awesome-repositories: https://awesome-repositories.com/repository/sorrycc-dva.md

## Description

Dva is a framework for building web applications that integrates React and Redux. It utilizes a model-driven architecture to organize application logic, centralizing state management into cohesive modules that encapsulate reducers, asynchronous effects, and event subscriptions.

The framework distinguishes itself through a plugin system that intercepts the action dispatch cycle to automate cross-cutting concerns such as loading state tracking. It also provides a development environment that supports hot module replacement, allowing for the updating of components, routes, and state models in the browser without requiring a full page reload or losing the current application state.

By combining these capabilities, the framework provides a structured approach to managing complex data flows and asynchronous operations in single-page applications. It is designed to reduce boilerplate code while maintaining a predictable, action-based state management pattern.

## Tags

### Web Development

- [State-Management Frameworks](https://awesome-repositories.com/f/web-development/backend-development/web-frameworks/full-stack-frameworks/react-frameworks/state-management-frameworks.md) — Provides a lightweight framework for building web applications using React and Redux with an Elm-inspired architecture for managing state.
- [Reducer State Management](https://awesome-repositories.com/f/web-development/frontend-development-tools/state-data-management/state-logic-patterns/reducer-state-management.md) — Centralizes application state in a single immutable store that updates through predictable actions and pure reducer functions.
- [Centralized State Management](https://awesome-repositories.com/f/web-development/hydration-state-management/browser-side-state-management/centralized-state-management.md) — Organizes complex application data and asynchronous logic into predictable models using a centralized store and action-based updates.
- [Single-Page Applications](https://awesome-repositories.com/f/web-development/single-page-applications.md) — Builds dynamic web interfaces with integrated routing and state management to create seamless user experiences without full page reloads.

### Data & Databases

- [Application State Management](https://awesome-repositories.com/f/data-databases/application-state-management.md) — Organizes logic into models using reducers, effects, and subscriptions to maintain a predictable data flow. ([source](https://github.com/sorrycc/dva#readme))

### Development Tools & Productivity

- [Application Frameworks](https://awesome-repositories.com/f/development-tools-productivity/application-frameworks.md) — Organizes application logic into models containing reducers, effects, and subscriptions for predictable state management.
- [Hot Module Replacement](https://awesome-repositories.com/f/development-tools-productivity/hot-module-replacement.md) — Updates application components and state models in the browser during development without requiring a full page reload.

### Software Engineering & Architecture

- [State-Driven Application Architectures](https://awesome-repositories.com/f/software-engineering-architecture/state-driven-application-architectures.md) — Encapsulates state, reducers, and side effects into cohesive modules that define the structure and behavior of application features.
- [Action Dispatch Middleware](https://awesome-repositories.com/f/software-engineering-architecture/action-dispatch-middleware.md) — Intercepts the action dispatch cycle to inject cross-cutting logic like logging or loading state tracking into the application flow.
- [Event Subscriptions](https://awesome-repositories.com/f/software-engineering-architecture/event-subscriptions.md) — Registers persistent listeners that watch external data sources and dispatch actions to the store whenever specific events occur.
- [Generator-Based Flow Control](https://awesome-repositories.com/f/software-engineering-architecture/execution-flow-control/generator-based-flow-control.md) — Uses generator functions to manage asynchronous side effects by yielding control flow to a middleware layer for execution.
- [Modular Plugin Architectures](https://awesome-repositories.com/f/software-engineering-architecture/modular-plugin-architectures.md) — Extends application functionality with reusable plugins to automate cross-cutting concerns like loading states and data synchronization.
- [Modular Plugin Extensions](https://awesome-repositories.com/f/software-engineering-architecture/modular-plugin-extensions.md) — Adds modular extensions to automate cross-cutting tasks like tracking loading states across asynchronous operations throughout the entire application. ([source](https://github.com/sorrycc/dva#readme))

### Part of an Awesome List

- [React - A JavaScript library for building user interfaces](https://awesome-repositories.com/f/awesome-lists/more/react-a-javascript-library-for-building-user-interfaces.md) — Listed in the “React - A JavaScript library for building user interfaces” section of the Awesome Redux awesome list.
