1、请简述vue的特性
(1)数据驱动视图
在vue页面中,vue会监听数据变化,当页面数据发生变化的时候,vue会重新渲染页面结构。
(2)双向数据绑定
vue实现了数据的双向绑定,当数据发生变化的时候,视图也会发生变化;当视图发生变化的时候,数据也会跟着同步发生变化。
(3)指令
指令主要包括内置命令和自定义命令,内置命令指的是vue中自带的命令,而自定义命令指的是有用户自己定义的指令。指令的名称以“v-”开头,作用于HTML中的元素。将指令绑定到元素上时,指令会为绑定的元素添加一些特殊行为。
(4)插件
vue支持插件,通过加载插件可以实现更多功能。
2、请简述MVVM的组成部分及基本工作原理
组成部分:Model(数据类型),View(视图),ViewModel(视图类型)
Model:是数据部分,负责业务数据的处理
View:是视图部分,负责视图处理
VBiewModel:用于连接视图与数据类型,负责监听Model或者View的改变。
3、请简述v-if与v-show指令的区别
v-show与v-if都用来决定某一个元素是否在页面上显示出来。
v-if是根据布尔值切换元素的显示或隐藏元素,本质是通过操作DOM元素来切换显示状态。当给定的值为true时,元素存在于DOM树中;当给定的值为false时,元素从DOM树中移除。
v-show的原理是通过为元素添加或移除display:none样式来实现元素的显示或隐藏。
当需要频繁切换某个元素的显示或隐藏属性的时候,使用v-show会更加节省性能上的开销,如果只需要切换一次的时候,使用v-if更合理。
4、请简述事件修饰符
① 通过.prevent事件修饰符可以实现阻止默认事件行为的功能。
② 通过.stop事件修饰符可以实现阻止事件冒泡的功能。
③ 通过.capture事件修饰符可以实现事件捕获的功能。
④ 通过.once事件修饰符可以实现使事件只触发一次的功能。
⑤ 通过.self事件修饰符可以实现只有DOM元素自身触发事件时才执行事件方法的功能。
5、请简述组件之间时间共享有哪几种方式
通过props实现父组件向子组件中传递数据
通过自定义事件实现子组件向父组件传递数据
通过依赖注入实现跨级组件之间的数据传递
6、请简述解决组件之间样式冲突的方式
scoped属性用于解决组件之间的样式冲突
深度选择器,通过:deep()伪类来实现,其小括号中可以定义用于子组件的选择其
7、请简述自定义指令的分类
vue中自定义指令分为两类,分别是局部自定义指令,全局自定义指令。
私有自定义指令指的是在组件内部定义的指令,私有自定义指令指的是在组件内部定义,在定义的组件内部使用的指令。
全局自定义指令是在全局定义的指令,全局定义的指令可以用于任何一个组件中。
8、请简述KeepAlive组建的作用
在vue中,可以通过KeepAlive组件实现组件缓存
KeepAlive组件通过<KeepAlive>标签来定义,使用<KeepAlive>标签包裹需要缓存的组件,组件就不会销毁。
9、简述如何实现路由重定向
路由重定向可以使用户在访问一个URL地址时,强制跳转到另一个URL地址,从而展示特定的组件。通过路由匹配规则中redirect属性可以指定一个新的路由地址,从而实现路由重定向。
10、请简述router.push()和router.go()的区别
router.push():push()方法会向历史记录中添加一个新的记录,以编程方式导航到一个新的URL,当用户单机浏览器后退按钮时,会回到之前的URL。
router.go():go()方法用于实现前进或后退的效果,其参数表示历史记录中前进或后退的步数,类似于window.history.go(),相应的地址栏也会发生变化。