1、vue的基本原理
当一个vue实例创建时,vue会遍历data中的属性,用Object.defineProperty将它们转为getter/setter,并且在内部追踪相关依赖,当属性被访问或修改时通知变化,每个组件实例都有相应的water实例,它会将组件渲染的过程中把属性记录为依赖,之后当依赖项的setter被调用时,会通知watcher重新计算,从而使它关联的组件得以更新
2、computed和watch的区别
computed支持缓存,只有依赖的数据发生了变化,才会重新计算。不支持异步,有异步操作则无法监听数据的变化。computed中,属性有一个get和set方法,当数据发生变化时,会调用set方法
watch不支持缓存,数据变化时,它就会触发相应的操作。支持异步监听
3、slot插槽
vue的内容分发机制,组件内部的模版引擎使用slot元素作为承载分发内容的出口
4、过滤器
过滤数据,过滤器是一个函数,用在插值表达式{{}}和v-bind表达式中,然后放在操作符"|"后面
5、保存页面状态
1、将状态存储在localStorage和sessionStorage中
2、路由传值
3、keep-alive缓存页面
6、常用事件修饰符
.stop防止事件冒泡
.prevent防止默认行为
.capture防止事件捕获
.self只触发自身元素事件,不包含子元素
.once只会触发一次
7、v-if和v-show的区别
v-if是动态的向DOM树内添加或者删除DOM元素,v-show是通过设置DOM元素的display样式属性控制显隐
8、data为什么是一个函数
vue组件可能存在多个实例,如果使用对象形式定义data,可能会导致它们共用一个data对象,那么状态变更会影响所有的组件实例
9、keep-alive
需要在组件切换的时候,保存一些组件的状态防止多次渲染,就可以使用keep-alive组件包裹需要保存的组件
keep-alive有三个属性
include:字符串或正则表达式,只有名称匹配的组件会缓存;
exclude:字符串或正则表达式,任何名称匹配的组件都不会被缓存;
max:数字,最多可以缓存多少组件实例
注:keep-alive包裹动态组件时,会缓存不活动的组件实例
10、单页面和多页面的区别
单页面指只有一个主页面的应用,一开始只需要加载一次js、css等相关资源。所有内容都包含在主页面,对每一个功能模块组件化。单页应用跳转,就是切换相关组件,仅仅刷新局部资源
多页面:有多个独立页面的应用,每个页面必须重复加载js、css等相关资源。多页应用跳转,需要整页资源刷新