ViewModelはVueのコンストラクタから作成することが出来ます。
vm = new Vue({
data: {
name: "foo",
}
});
vm.$el
で参照することが出来るDOMオブジェクトがViewを担っています。
データが変更された場合は非同期でViewに反映されるためパフォーマンスにも優れています。
$el
を使ってDOM操作することはあまりなくて、そういった場合はDirectiveやFilterを使うといいでしょう。
データ自体はただのJavaScriptのオブジェクトであり、Object.definePropertyを使って変更や参照を監視していることが特徴です。