1, 对 vue 的理解, 他有什么特点, vue 为什么不能兼容 IE8 及以下浏览器
vue 是一套用于构建用户界面的渐进式框架, 核心是一个响应的数据绑定系统
vue 是一款 MVVM 框架, 基于双向绑定数据, 当数据发生变化时候, vue 自身会进行一些运算
特点: 简洁轻量, 数据驱动, 组件化, 模块友好
vue.js 使用了 IE8 无法模拟的 ECMAScript 5 特性, 没有替代方案
2, 简述 Vue 双向数据绑定的原理
主要是通过 Object 对象的 defineProperty 属性, 重写 data 的 set 和 get 函数来实现的
vue 是通过数据劫持的方式来做数据绑定, 最核心的方法就是通过 Object.defineProperty() 来实现对属性的劫持
在设置或者获取的时候我们就可以在 get 或者 set 方法里加入其他的触发函数, 达到监听数据变动的目的
3, 什么是 MVVM, 和 MVC 的区别
MVVM 是 Model-View-ViewModel 的缩写
Model 层代表数据模型
View 代表组件视图, 负责将数据模型转化成 UI 展现出来
ViewModel 是一个同步 View 和 Model 的对象 (双向绑定)
在 MVVM 中, View 和 Model 之间并没有直接的联系, 而是通过 ViewModel 进行交互,
Model 和 ViewModel 之间的交互是双向的, 因此 通过视图操作数据, 也能通过数据操作视图
MVC 是 Model-View- Controller 的简写. 即模型 - 视图 - 控制器, 使用 MVC 的目的是为了将 M 和 V 相分离
MVVM 与 MVC 最大的区别就是实现了 View 和 Model 的自动同步, 也就是当 Model 的属性改变时
我们不用再手动操作 Dom 来改变 View, 而是改变后该属性对应 View 层会自动改变
4,vue.JS 的两个核心是什么
数据驱动和组件化思想
5,vue 与 angular 的区别
vue 的双向邦定是基于 ES5 中 getter/setter 来实现的, 而 angular 是由自己实现一套模版编译规则, 需要进行所谓的 "脏值" 检查, vue 则不需要
vue 需要提供一个 el 对象进行实例化, 后续的所有作用范围也是在 el 对象之下, 而 angular 而是整个 html 页面
6, 说下 vue 的底层原理
Vue 的模式是 m-v-vm 模式, 即 (model-view-modelView), 通过 modelView 作为中间层, 进行双向数据的绑定与变化
1) 通过建立虚拟 dom 树 document.createDocumentFragment(), 方法创建虚拟 dom 树
2) 一旦被监测的数据改变, 会通过 Object.defineProperty 定义的数据拦截, 截取到数据的变化
3) 截取到的数据变化, 从而通过订阅 -- 发布者模式, 触发 Watcher(观察者), 从而改变虚拟 dom 的中的具体数据
4) 最后通过更新虚拟 dom 的元素值, 从而改变最后渲染 dom 树的值, 完成双向绑定
7, 如何使 CSS 只在当前组件起作用
如果想写的 CSS 只对当前组件起作用, 则在 style 中写入 scoped
8,vue 中 v-if 和 v-show 的区别
v-if 和 v-show 都是用来控制元素的渲染
v-if 是根据后面数据的真假, 来判断 DOM 的添加删除等操作
v-show 只是在修改元素的 CSS 样式 (display 属性值)
v-if 如果初始渲染条件为真, 就渲染, 反之就不渲染
v-show 不管初始条件是否为真, 都会被渲染
v-if 有更高的切换消耗, 不适合做频繁的切换
v-show 有更高的初始渲染消耗, 适合做频繁的切换
9, 请举例 vue 常用的修饰符
事件修饰符: stop,prevent,self,once
lazy,number,trim,exact
10,v-on 可以绑定多个方法吗?
可以
<input v-on:keyup.enter="submit" v-on:focus="onFocus">
来源: http://www.bubuko.com/infodetail-3007026.html