| |Lightview |Svelte |Vue |React |Riot | |-----------|----------|---------|----------|----------|----------| | *Size* | 8.5K+ | 1.5K+ | 29K+ | 42K+ | 6.5K+ | | *Community Size* | Tiny | Large | Very Large | Very Large | Medium | | *Created* | 2022 | 2015 | 2014 | 2011 | 2013 | | *Focus* | Small to Medium Projects | Any | Any | Any | Any | | *Preprocessor* | No | Yes | For Components | Yes | Yes | | *DOM Updates* | Dependency Tracker | Dependency Tracker | VDOM | VDOM | DOM Traversal | | *Fully Reactive1* | Yes | Yes | Yes | No | No | | *Two Way Data Binding2* | Optional | No | No | No | No | | *Closeness To JavaScript3* | 90% | 95% | 80% | 60% | 90% | | *Basic Learning Curve4* | Very Low | Very Low | Low | High | Very Low | | *Power Use Learning Curve5* | Moderate | Moderate | High | Very High | Low | | *Officially Supported Router* | Future | Yes | Yes | No | Yes | | *Officially Supported State Management6* | Yes | Yes | Yes | No | ? | | *Officially Supported Transition Effects* | No | Yes | Yes | No | No | | *Officially Supported Components* | Yes | ? | ? | ? | ? | A version of the most [prevelant UI tool benchmark](https://krausest.github.io/js-framework-benchmark/current.html) from Krausest has yet to be published. Internal use of this benchmark shows the current performance of Lightview is close to that of Ember (sometimes faster, sometimes slower). It is often as fast or slightly faster than React and sometimes as fast as Vue. It is never as fast as Svelte. This should be adequate for many applications. Remember, it is not the number of users that impacts a UI library, it is the size and change rate of the DOM that needs to be updated. If you don't have thousands of nodes to update or changes of an extremely high frequency, then you should be able to deliver a good user experience with Lightview. 1. Fully Reactive - Both React and Riot require you to instrument your application with some type of event handlers to propagate change. Lightview, Svelte, and Vue can propagate change automatically. 2. Closeness To JavaScript - A rough approximation of how "traditional" your code can be and how few extra conventions you need to learn to be productive. In general, this relates to the use of state management, attribute directives, annotations, and language additions that can't be processed like regular JavaScript. 3. Two-way data binding is much maligned. We do understand the issues of tracing data changes through a large application developed over an extended period of time by multiple-developers. That being said, Lightview works hard to prevent vicious cycles that creat hard to track bugs and is extraordinarily declarative. It is left to you to decide if you want to use two-way data binding. All variables can be monitored with a simple call to `addEventListener` without declaring them as `reactive`. 4. The learning curves for React are shown as High and Very High due the need to learn JSX, the programming style required, and the need to use hooks or manage a fair number of lifecyle events directly. We know this may create some lash back, but we believe the extent of this need sometimes makes things as bad as un-restrained use of two-way data binding. 5. Riot is listed as `Low` for power use learning curve because it does not provide a lot of extras. This is not to say it isn't powerful, Riot focuses on minimalistic simplicity. You can use the rest of JavaScript's native functionality to accomplish what you need. 6. State in Lightview is managed with a combination of regular JavaScript objects and the variable functional types `imported`, `exported`, `observed`, `reactive`, `remote` and `shared`.