1. Vue是什么?和其他框架有什么区别?
答:Vue.js是一个流行的JavaScript框架,用于构建用户界面,它和Angular、React这些框架相比具有更小、更快、更容易上手等特点。Vue基于响应式编程的概念,可以轻松地处理动态数据绑定和组件化开发。
2. Vue 的生命周期有哪些?
答:Vue的生命周期分为8个阶段,分别是:创建、挂载、更新、销毁、激活、停用、错误捕获、渲染函数。
3. Vue 组件的 data 属性为什么是一个函数?
答:Vue组件的data属性必须是一个函数,因为组件可能会被复用多次,如果data是一个对象,则会导致所有组件共享同一个data对象,从而导致数据互相污染。
4. Vue 组件之间的通信方式有哪些?
答:Vue组件之间的通信有props、 e m i t 、 emit、 emit、parent/ c h i l d r e n 、 children、 children、refs、eventbus、Vuex等方式。
5. 组件中的 key 属性有什么作用?
答: 在Vue中列表渲染时使用key可以提高性能,当数据改变时,Vue会通过key区分出哪些组件是新增的,哪些是更新的,哪些是删除的。
6. Vue 路由的基本配置?
答:Vue路由的基本配置包括定义路由、创建路由实例、将路由实例注入到Vue实例、使用路由组件等。
7. Vue 中如何给组件添加样式?
答:Vue中可以使用样式表、style标签、scoped样式等方式来添加样式。
8. Vue 如何实现表单双向绑定?
答:Vue使用v-model指令可以实现表单双向绑定,v-model绑定的是一个变量,同时也会监听这个变量的变化,当变量改变时,表单中的值也会发生改变。
9. Vue 中 computed 和 watch 的区别?
答:computed是计算属性,当依赖的数据变化时自动更新,computed的值会被缓存,只有依赖的数据变化时才会重新计算,而watch是监听属性,当属性变化时执行回调函数。
10. Vue 中如何控制组件的渲染顺序?
答:Vue中可以使用v-if、v-show、v-cloak等指令来控制组件的渲染顺序。
11. Vue 生命周期中 mounted 和 created 的区别?
答:created钩子函数在实例创建完成后立即执行,但是挂载阶段还没有开始,所以无法获取到DOM元素;mounted钩子函数在实例创建并且DOM挂载完成后执行,可以获取到DOM元素。
12. Vue 中的虚拟 DOM 是什么?
答:Vue中的虚拟DOM是一个轻量级的JavaScript对象,它描述了真实DOM的层次结构和属性,可以在数据发生变化时快速更新视图。
13. Vue 的 computed 和 methods 区别?
答:computed是计算属性,是基于依赖数据的缓存属性,只要依赖数据改变,就会重新计算缓存的值,而methods是方法,每次调用都会执行一次函数体。
14. Vue 中的 directives 有哪些?
答:Vue中的指令有v-if、v-show、v-for、v-bind、v-on、v-model、v-text、v-html等等。
15. Vue 中如何进行组件的切换?
答:Vue中可以使用v-if、v-show、v-cloak、transition等指令来进行组件切换。
16. Vue 的过渡动画是如何实现的?
答:Vue中的过渡动画可以通过transition组件和transition-group组件来实现。其中,transition组件可以给单个元素添加过渡动画,transition-group组件可以给多个元素添加过渡动画。
17. 在组件中 created 和 mounted 哪个先执行?
答:created先于mounted执行。
18. Vue 中的钩子函数有哪些?
答:Vue中的钩子函数包括:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、activated、deactivated、beforeDestroy、destroyed、errorCaptured。
19. Vue 的单向数据流是什么?
答:Vue的单向数据流指的是父组件可以向子组件传递数据,但是子组件不能直接修改父组件的数据。
20. Vue 中的路由钩子函数有哪些?
答:Vue中的路由钩子函数包括:beforeEach、beforeResolve、afterEach、scrollBehavior。其中beforeEach会在每个路由切换前执行,beforeResolve会在beforeEach和路由组件内部异步组件被解析完之后执行,afterEach会在每个路由切换后执行,scrollBehavior会在路由切换时控制页面滚动的位置。