前端八股文

155 阅读1分钟

vue面试题

1.Vue 底层实现原理

vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter 和 getter,在数据变动时发布消息给订阅者,触发相应的监听回调。Vue 是一个典型的 MVVM 框架,模型(Model)只是普通的 javascript 对象,修改它则视图(View)会自动更新。这种设计让状态管理变得非常简单且直观

Observer(数据监听器) :Observer 的核心是通过 Object.defineProperty()来监听数据的变动,这个函数内部可以定义 setter 和 getter,每当数据发生变化,就会触发 setter。这时候 Observer 就要通知订阅者,订阅者就是 Watcher。

Watcher(订阅者) :Watcher 订阅者作为 Observer 和 Compile 之间的信任桥梁,主要做的事情是:

  1. 在自身实力化时往属性订阅器(dep)里面添加自己
  2. 自身必须有一个 update()方法
  3. 待属性变动 dep.notice()通知时,能调用自身的 update()方法,并触发 Compile 中绑定的回调

Compile(指令解析器) :Compile 主要做的事情是解析模板指令,将模板中变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加鉴定数据的订阅者,一旦数据有所变动,收到通知,更新视图