Knockout (web framework)

Knockout
Original author(s) Steve Sanderson
Initial release July 5, 2010 (2010-07-05)
Stable release
3.4.1 / November 8, 2016 (2016-11-08)
Development status Active
Written in JavaScript
Size 58 KB minified / 280 KB (development mode)
Type JavaScript library
License MIT
Website knockoutjs.com

Knockout is a standalone JavaScript implementation of the Model-View-ViewModel pattern with templates. The underlying principles are therefore:

The latter leverages the native event management features of the JavaScript language.

These features streamline and simplify the specification of complex relationships between view components, which in turn make the display more responsive and the user experience richer.

Knockout was developed and is maintained as an open source project by Steve Sanderson, a Microsoft employee. As the author said, "it continues exactly as-is, and will evolve in whatever direction I and its user community wishes to take it", and stressed, "this isn’t a Microsoft product".[1]

Features

Knockout includes the following features:

Simple example

In this example, two text boxes are bound to observable variables on a data model. The "full name" display is bound to a dependent observable, whose value is computed in terms of the observables. When either text box is edited, the "full name" display is automatically updated, with no explicit event handling.

View (HTML)

<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
<h2>Hello, <span data-bind="text: fullName"></span>!</h2>

View Model (JavaScript)

function ViewModel() {
    this.firstName = ko.observable("Joe");
    this.lastName = ko.observable("Bloggs");

    this.fullName = ko.computed(
        function() { return this.firstName() + " " + this.lastName(); }, 
        this);
}

ko.applyBindings(new ViewModel());

References

  1. "Steven Sanderson's blog post 'Hello, Microsoft'". blog.stevensanderson.com. November 3, 2010. Retrieved 2014-10-22.

External links

This article is issued from Wikipedia - version of the 11/15/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.