awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
RubyLouvre avatar

RubyLouvre/avalon

0
View on GitHub↗
5,774 stars·1,395 forks·JavaScript·13 viewsavalonjs.coding.me↗

Avalon

Avalon is a client-side MVVM JavaScript framework that binds model data to DOM elements and automatically updates views when state changes. It functions as a component-based UI framework, encapsulating markup, logic, and styles into reusable custom components that can be composed across pages, while also serving as a virtual DOM diffing engine that computes minimal DOM updates by comparing lightweight in-memory view tree snapshots.

The framework distinguishes itself through a template directive compiler that transforms declarative HTML attributes like ms-repeat and ms-if into executable view instructions, combined with a dirty-checking data binding approach that monitors model changes by periodically scanning bound properties during each event loop tick. It includes a hash-based client routing system for single-page applications, a batch DOM update queue that collects pending view mutations into a single flush cycle, and a large list renderer that efficiently displays big tables or lists without blocking the browser during initial page load.

Avalon supports two-way data binding between models and form elements, form input validation with feedback, and declarative view rendering through HTML-based templates. It provides component-based route mapping for single-page application navigation without page reloads, and enables building and composing reusable components that can be nested across pages.

Features

  • MVVM Frameworks - A client-side MVVM JavaScript framework that binds model data to DOM elements and automatically updates views when state changes.
  • Model-to-DOM Synchronizations - Syncs a JavaScript model with the DOM so changes in either are reflected in the other automatically.
  • Two-Way Data Binding - Syncs a model property with a form element so changes in either side automatically update the other.
  • UI Component Compositions - Encapsulates markup, logic, and styles into reusable custom HTML tags that can be nested and composed across pages.
  • Component-Based UI Frameworks - Encapsulates markup, logic, and styles into reusable custom components that can be composed across pages.
  • HTML View Composition - Builds UI by nesting custom HTML tags that each encapsulate their own template, logic, and scoped styles.
  • Dirty Checking Mechanisms - Monitors model changes by periodically scanning all bound properties during each event loop tick.
  • Data-to-UI Bindings - Links a JavaScript view-model to DOM elements so changes in either side automatically update the other.
  • Directive-Based View Renderers - Defines user interfaces using HTML-based templates with directives that control rendering and behavior.
  • Reusable Components - Encapsulates markup, logic, and styles into custom elements that can be composed across pages.
  • Directive-Based Template Compilers - Transforms declarative HTML attributes like ms-repeat and ms-if into executable view instructions via a template directive compiler.
  • DOM Write Batching - Ships a batch DOM update queue that collects pending view mutations into a single flush cycle.
  • Virtual DOM Diffing - Computes minimal DOM updates by comparing lightweight in-memory view tree snapshots using a virtual DOM diffing engine.
  • Single-Page Navigators - Provides hash-based client routing for single-page application navigation without page reloads.
  • Component-Based Route Definitions - Maps URL paths to components so the application navigates by swapping component instances.
  • Virtualized List Rendering - Renders big tables or lists without blocking the browser during page load, avoiding white-screen pauses.
  • Large List Renderers - Ships a large list renderer that efficiently displays big tables without blocking the browser during initial page load.
  • Form Input Validation - Checks user-entered data against rules and displays feedback before submission.
  • Client-side Routing - Implements a hash-based client-side routing system for mapping URL paths to components in single-page applications.
  • Hash-Based Routing - Switches visible views by listening to URL hash changes and mapping them to registered component handlers.
  • JavaScript 框架汇总 - Listed in the “JavaScript 框架汇总” section of the Awesome Frontend awesome list.

Star history

Star history chart for rubylouvre/avalonStar history chart for rubylouvre/avalon

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Open-source alternatives to Avalon

Similar open-source projects, ranked by how many features they share with Avalon.
  • ractivejs/ractiveractivejs avatar

    ractivejs/ractive

    5,920View on GitHub↗

    Ractive is an open-source JavaScript framework for building reactive user interfaces where the DOM automatically updates when underlying data changes. It is fundamentally a declarative data binding library that synchronizes data between the model and the view, enabling two-way binding without manual DOM manipulation, and operates as a template-based component system for composing markup, styles, and logic into reusable UI components. The framework distinguishes itself through a plugin-extensible architecture that allows custom components, adaptors, and extensions to be registered without modi

    JavaScript
    View on GitHub↗5,920
  • angular/angular.jsangular avatar

    angular/angular.js

    58,615View on GitHub↗

    AngularJS is a structural framework for building dynamic web applications by extending standard HTML with custom tags and attributes. It operates as a client-side template engine that transforms declarative markup into interactive components, organizing application logic through a model-view-controller pattern. By utilizing a centralized dependency injection container, the framework manages the lifecycle of services and components to ensure modularity and maintainable architecture. The framework is defined by its two-way data binding mechanism, which automatically synchronizes data models wit

    JavaScript
    View on GitHub↗58,615
  • kbrsh/moonkbrsh avatar

    kbrsh/moon

    5,951View on GitHub↗

    Moon is a minimal reactive UI library for building user interfaces with a component composition framework, client-side routing, server-side rendering, and signals-based reactivity. It provides a virtual DOM diffing engine that computes minimal real DOM mutations, enabling efficient view updates by comparing in-memory UI representations against previous versions. The library distinguishes itself through a signals-based reactivity system that tracks data dependencies through observable signals, triggering targeted DOM updates only when values change. It implements a state driver pattern for uni

    JavaScriptfunctional-programmingjavascriptmoon
    View on GitHub↗5,951
  • knockout/knockoutknockout avatar

    knockout/knockout

    10,549View on GitHub↗

    Knockout is a client-side UI library and JavaScript framework used to create responsive web interfaces. It functions as a declarative data binding library and an observable data model system that decouples business logic from the document object model. The project implements the Model-View-ViewModel pattern to separate application logic from the user interface. It synchronizes data models with visual views by linking internal JavaScript properties to HTML elements, allowing the interface to update automatically when underlying data changes. The framework provides capabilities for dynamic fro

    JavaScript
    View on GitHub↗10,549
See all 30 alternatives to Avalon→

Frequently asked questions

What does rubylouvre/avalon do?

Avalon is a client-side MVVM JavaScript framework that binds model data to DOM elements and automatically updates views when state changes. It functions as a component-based UI framework, encapsulating markup, logic, and styles into reusable custom components that can be composed across pages, while also serving as a virtual DOM diffing engine that computes minimal DOM updates by comparing lightweight in-memory view tree snapshots.

What are the main features of rubylouvre/avalon?

The main features of rubylouvre/avalon are: MVVM Frameworks, Model-to-DOM Synchronizations, Two-Way Data Binding, UI Component Compositions, Component-Based UI Frameworks, HTML View Composition, Dirty Checking Mechanisms, Data-to-UI Bindings.

What are some open-source alternatives to rubylouvre/avalon?

Open-source alternatives to rubylouvre/avalon include: ractivejs/ractive — Ractive is an open-source JavaScript framework for building reactive user interfaces where the DOM automatically… angular/angular.js — AngularJS is a structural framework for building dynamic web applications by extending standard HTML with custom tags… kbrsh/moon — Moon is a minimal reactive UI library for building user interfaces with a component composition framework, client-side… knockout/knockout — Knockout is a client-side UI library and JavaScript framework used to create responsive web interfaces. It functions… declarativehub/bond — Bond is a Swift data binding framework designed to synchronize data models and user interface elements through one-way… derbyjs/derby — Derby is an isomorphic MVC framework and real-time data synchronization engine designed for building collaborative…