In addition to the answer already provided, there are a few things to keep in mind -
MVVM
The knockout is MVVM because it supports a good separation of concerns. Unlike other JavaScript libraries such as jQuery, the goal is not to pollute the view with something that does not concern it.
The purpose of the view model is important for understanding. It does not try to manipulate the DOM, because only the logic necessary to transfer data to the view is placed inside it.
The purpose of the view is only to present the data. There is no logic, verification, or other logic code.
model is the only place knockout can get a little confused. Itβs usually good practice to place a separate model in your project to use Knockout, but many developers have found it easy to mix model into a view model . The reason for this is obvious (some model are very basic), but again this is only because of the ease of implementation.
MVC vs MV *
Of course, there are other answers on SO.com that try to answer that there is MV* , but I wanted to drop $ 0.02 here. Other libraries or frameworks say they are MVC or MVP or MV(whatever) , but Knockout is the only thing I have found that practices what it preaches in this regard. If you have the time and desire, look at the structure of other frameworks, such as Angular or Ember, and you will see that there is a blurry line that exists, and more or less they just use the MVVM pattern, but calling it something else.
source share