52points

Knockout JS

90points

React

Knockout JS
Comparison winner
React
vs
vs

52 facts in comparison

Knockout JS vs React

Knockout JS
React

Why is Knockout JS better than React?

  • Has two-way databinding
    ?
  • 35KB smaller file size without dependencies
    ?

    43KBvs78KB
  • Uses a templating engine
    ?
  • Supports computed properties
    ?
  • Extends HTML
    ?
  • Published under MIT License
    ?
  • Has a stable public API
    ?
  • Supports 2 earlier versions of Internet Explorer
    ?

    6vs8

Why is React better than Knockout JS?

  • Models are plain JavaScript objects
    ?
  • Uses JSX for templating
    ?
  • Is DOM manipulation library agnostic
    ?
  • Integrates with other MV* Frameworks
    ?
  • Has a popular plugin to support animation
    ?
  • Allows the use of view mixins
    ?
  • Can be rendered on the server
    ?
  • Supports composed (partial) views
    ?

General info

Has automatic view filtering
Knockout JS
React
Has a mechanism to filter views based on scope variables (for example when searching) without the need to write much extra code.
Uses a templating engine
Knockout JS
React
Template engines allow for easy and flexible UI building.
Supports computed properties
Knockout JS
React
Allows the use of functions as properties to compute properties of objects.
Uses JSX for templating
Knockout JS
React
JSX is a templating engine that allows the developer to write markup directly in their code, which is then live- or pre-compiled to plain JavaScript. This eliminates the separation between view markup and code and offers speed improvements over string-based templating languages.
Extends HTML
Knockout JS
React
Some people see this as an advantage as it eliminates the overhead from another template language.
Published under MIT License
Knockout JS
React
The MIT License is a very permissive license which allows all uses, including business use, without warranty.
Can be used to replace a part of another framework without removing the remaining features.
Supports composed (partial) views
Knockout JS
React
Allows for nesting view templates into top-level views from within a template.
has a popular boilerplate project
Knockout JS
React
Has an official or well known boilerplate project which lays out the recommended file structure and allows developers to get started faster.

Plugins

Has a plugin which includes facilities to easily create view animations.
number of plugins

33

Unknown. Help us by suggesting a value. (React)

Plugins offer an easy way to extend the functionality or integrate with other services. A high number of plugins may indicate an active community of users. Only official plugins are taken into account.
has a dedicated plugin source
Knockout JS
React
This shows that the framework has a living ecosystem, large community support and allows for more flexibility and faster development.
Plugin to help validate client input before it gets processed or sent to a server. While this does not replace server-side validation, it can vastly improve the user experience.
Includes utilities to keep models in sync with their server-side representation without the need of writing jQuery boilerplate ajax calls.
Has a plugin to keep models in sync with their server-side representation without the need of writing boilerplate ajax calls.
Supports animation
Knockout JS
React
Includes facilities to easily create view animations.
Has plugin which offers a simple functionality to synchronize models with the HTML5 LocalStorage.

Libraries & Packages

Does not require or seriously encourage the use of a specific library (like jQuery, Zepto or MooTools) to handle DOM manipulation and can be used with one the developer prefers.
Asynchronous Module Definition libraries allow for easy modular, clean programming. If a framework does not work well with such libraries, it might have some other means to modularize its components and resolve dependencies, like Dependency Injection.
Bower is an easy-to-use, npm-like package manager for frontend apps.
The node package manager can also be used for managing front end scripts.
Includes jQuery Lite
Knockout JS
React
Uses jQuery Lite elements where DOM manipulation is necessary. This way, developers get jQuery’s comfortable helper functions without having to include the entire library. In many use cases, this eliminates the project’s dependency on jQuery.
Has the popular utility library underscore.js as a dependency. Underscore includes helper functions for list manipulation and functional programming.

Data binding

Has two-way databinding
Knockout JS
React
Models and views can be bound to update each other.
Supports one-way data binding
Knockout JS
React
Views can be bound to update automatically when an observable object changes.
This makes for easier data transfer between the app and REST Services or the LocalStorage. It also reduces complexity from getter and setter functions.
Allows the use of view mixins
Knockout JS
React
Mixins are a programming technique that allows different objects to share common behaviour without the need for object-oriented inheritance.
Can be extend to support models and views updating each other. This adds more filesize but allows for more flexibility.
Uses observables for data binding
Knockout JS
React
Models are observed for changes. This is a well known pattern. Can be more performant than dirty-checking in some cases.
Uses Dirty-Checking
Knockout JS
React
Checks for any changes, and updates the corresponding fields. Can be more performant than observers in some cases.

Performance

Smaller file size means faster load times.
Supports routing and deep linking
Knockout JS
React
Routing allows interaction with the browser url. This is very important for a good user experience if you are building one-page apps.
Uses Promises
Knockout JS
React
Has an internal implementation of the Promises/A+ specification. Promises are a popular alternative to callbacks when dealing with server responses.
Supports a template engine that can be pre-rendered on the server. This possibly improves page speed, especially on devices with low computing power.
Can be rendered on the server
Knockout JS
React
This greatly improves search engine crawlability. This possibly improves page speed, especially on devices with low computing power.
Has Dependency Injection
Knockout JS
React
This improves testability and modularity.
dependencies

0

Unknown. Help us by suggesting a value. (React)

Less dependencies means less extra scripts to include, usually resulting in less development overhead and faster load times.
Updates the DOM asynchronously
Knockout JS
React
Model changes do not immediately result in view updates but are queued and dispatched as a group. This can be a lot more performant than instant view updates.
Allows the use of libraries like jQuery Deferred to support promises. Promises are a popular alternative to callbacks when dealing with server responses.

Which are the best MV* frameworks?

Show all
This page is currently only available in English.