被爱的都是祖宗,安全感只有靠自己,太依赖一个人反而会伤的更深!!!
1、简述Vue的双向绑定原理
当vue实例化的时候,vue会遍历data里面的属性,通过object.definePrototype将它们转化为getter和stter并在内部追踪相关依赖,在属性被访问或者修改的时候进行更新。
双向绑定v-model是同时实现bind attribute(value)和Listen to event(input)
2、本地存储有哪些,区别是什么
sessionStorage和localStorage是h5新增的本地存储,用来存储客户端临时信息的对象。
前者是持久性存储,除非手动删除,否则一直存在。
后者是生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
数据存储的时候需要将JSON对象提供的stringify将其他数据类型转化成字符串,再存储到storage中就可以了.
存:
var obj = {"name":"xiaoming","age":"16"}
localStorage.setItem("userInfo",JSON.stringify(obj));
取:
var user = JSON.parse(localStorage.getItem("userInfo"))
删除:
localStorage.remove("userInfo);
清空:
localStorage.clear();
3、delete和Vue.delete删除数组的区别
delete只是被删除的元素变成了 empty/undefined 其他的元素的键值还是不变。
Vue.delete 直接删除了数组对应的项,改变了数组的键值。
4.Vue 组件 data 为什么必须是函数
因为 JS 本身的特性带来的,如果 data 是一个对象,那么由于对象本身属于引用类型,当我们修改其中的一个属性时,会影响到所有 Vue 实例的数据。如果将 data 作为一个函数返回一个对象,那么每一个实例的 data 属性都是独立的,不会相互影响了。
5、vue组件的优缺点
优点:轻量级框架、简单易学、双向数据绑定、组件化、视图、数据和结构的分离、虚拟DOM、运行速度快。
vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和dom,这样大大加快了访问速度和提升用户体验。而且他的第三方ui库很多节省开发时间。
缺点:seo难度比较大,初次加载耗时比较长,适合中小项目开发
6、vue和小程序的区别有哪些?
1、生命周期 2、数据的绑定 3、显示和隐藏 4、事件的处理 5、数据的双向绑定
6、传参 7、父子间的通信
7、导航守卫有哪些?
全局守卫:beforeEach afterEach beforeResolve
路由独享守卫:beforeEnter
组件内守卫:beforeRouteEnter beforeEnterUpdata beforeRouteLeave
8、vue的单项数据流的理解
单项数据流是指只能从一个方向来修改状态。
主要应用在父子组件之间的通信。
9、v-if 和 v-show 有什么区别
v-show 仅仅控制元素的显示方式,将 display 属性在 block 和 none 来回切换;而v-if会控制这个 DOM 节点的存在与否。当我们需要经常切换某个元素的显示/隐藏时,使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。
10.$route 和 $router 的区别
$router为 VueRouter 实例,想要导航到不同URL,则使用$router.push方法。
$route为当前 router 跳转对象,里面可以获取 name 、 path 、 query 、 params 等。
11、computed 和 watch 的区别和运用的场景?
computed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值;
watch: 更多的是「观察」的作用,类似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操作;
运用场景: 当我们需要进行数值计算,并且依赖于其它数据时,应该使用 computed,因为可以利用 computed 的缓存特性,避免每次获取值时,都要重新计算; 当我们需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许我们执行异步操作 ( 访问一个 API ),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
12、vuex的理解
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。
当项目遇到以下两种场景时
多个组件依赖于同一状态时。
来自不同组件的行为需要变更同一状态。
核心属性是state、getter、mutation、action、module