Knockout.js is a JavaScript MVVM library released in 2010. It provides data binding and declarative bindings between the view and view model. Core components include observables to track changes to model data, computed observables that update based on dependencies, and observable arrays to track collections and notifications. Custom bindings can also be created to extend functionality. Declarative bindings in HTML connect view elements to the view model using simple syntax.