基础问题
-
什么是Vue.js?它的核心特点是什么?
- Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。
- 核心特点:响应式数据绑定、组件化、虚拟 DOM、指令系统、轻量级。
-
Vue 的生命周期钩子有哪些?
beforeCreate
:实例初始化之后,数据观测和事件配置之前。created
:实例创建完成,数据观测和事件配置完成。beforeMount
:模板编译/挂载之前。mounted
:模板编译/挂载完成。beforeUpdate
:数据更新时,DOM 重新渲染之前。updated
:数据更新后,DOM 重新渲染完成。beforeDestroy
:实例销毁之前。destroyed
:实例销毁完成。
-
Vue 中的双向数据绑定是如何实现的?
- 通过
v-model
指令实现双向数据绑定。 - 底层原理是结合
v-bind
(绑定数据)和v-on
(监听事件)来实现。
- 通过
-
Vue 中的指令有哪些?
v-bind
:动态绑定属性。v-model
:双向数据绑定。v-for
:循环渲染列表。v-if
/v-else
/v-show
:条件渲染。v-on
:绑定事件监听器。v-text
:更新元素的文本内容。v-html
:更新元素的 innerHTML。
-
Vue 中的 computed 和 watch 的区别是什么?
computed
:计算属性,基于依赖的响应式数据缓存结果,适合处理复杂逻辑。watch
:监听器,监听某个数据的变化并执行回调,适合处理异步操作或副作用。
进阶问题
-
Vue 2 和 Vue 3 的主要区别是什么?
- 性能优化 :Vue 3 使用 Proxy 替代
Object.defineProperty
,提升了响应式系统的性能。 - Composition API:Vue 3 引入了 Composition API,提供了更灵活的代码组织方式。
- Tree-shaking 支持:Vue 3 的代码可以被更好地 tree-shaking,减少打包体积。
- Fragment 和 Teleport:Vue 3 支持多根节点组件(Fragment)和 Teleport(将组件渲染到 DOM 的其他位置)。
- 性能优化 :Vue 3 使用 Proxy 替代
-
Vue 中的虚拟 DOM 是什么?它的作用是什么?
- 虚拟 DOM 是一个轻量级的 JavaScript 对象,用于描述真实 DOM 的结构。
- 作用:通过对比新旧虚拟 DOM,最小化 DOM 操作,提升渲染性能。
-
Vue 中的 key 属性有什么作用?
key
用于标识列表中的每个元素,帮助 Vue 高效地更新和复用 DOM 元素。- 如果不使用
key
,Vue 会采用"就地复用"策略,可能导致渲染错误。
-
Vue 中的 mixin 是什么?它的优缺点是什么?
mixin
是一种分发 Vue 组件可复用功能的方式。- 优点:可以复用逻辑,减少代码重复。
- 缺点:可能导致命名冲突,逻辑不清晰,难以维护。
-
Vue 3 中的 Composition API 是什么?它解决了什么问题?
- Composition API 是一组基于函数的 API,允许开发者更灵活地组织组件逻辑。
- 解决了 Options API 在复杂组件中逻辑分散的问题,使代码更易维护和复用。
高级问题
-
Vue 中的响应式原理是什么?
- Vue 2 使用
Object.defineProperty
实现响应式,通过 getter 和 setter 监听数据变化。 - Vue 3 使用
Proxy
实现响应式,可以监听对象和数组的变化。
- Vue 2 使用
-
Vue 中的 nextTick 是什么?它的作用是什么?
nextTick
是 Vue 提供的一个方法,用于在下次 DOM 更新循环结束后执行回调。- 作用:确保在 DOM 更新完成后操作 DOM。
-
Vue 中的路由(Vue Router)是如何工作的?
- Vue Router 是 Vue 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。
- 通过
router-view
和router-link
实现路由的渲染和导航。
-
Vue 中的状态管理(Vuex)是什么?它的核心概念有哪些?
- Vuex 是 Vue 的官方状态管理库,用于集中管理组件的共享状态。
- 核心概念:
state
:存储应用的状态。getters
:从 state 中派生出状态。mutations
:同步修改 state。actions
:异步提交 mutations。modules
:将 store 分割成模块。
-
Vue 3 中的 Teleport 是什么?它的使用场景是什么?
Teleport
是 Vue 3 提供的一个组件,用于将子组件渲染到 DOM 的其他位置。- 使用场景:模态框、通知、下拉菜单等需要脱离当前 DOM 结构的组件。
实战问题
-
如何优化 Vue 应用的性能?
- 使用
v-if
和v-show
合理控制 DOM 渲染。 - 使用
computed
和watch
避免不必要的计算。 - 使用
keep-alive
缓存组件。 - 使用异步组件和懒加载。
- 使用 Vue 3 的
Tree-shaking
和Proxy
优化性能。
- 使用
-
如何处理 Vue 中的跨组件通信?
- 父子组件:通过
props
和$emit
。 - 兄弟组件:通过共同的父组件传递数据,或使用事件总线(Event Bus)。
- 跨层级组件:使用
provide
和inject
。 - 复杂场景:使用 Vuex 进行状态管理。
- 父子组件:通过
-
Vue 中的 SSR(服务端渲染)是什么?它的优缺点是什么?
- SSR 是在服务器端将 Vue 组件渲染成 HTML 字符串,发送到客户端。
- 优点:更好的 SEO、更快的首屏加载。
- 缺点:增加服务器负载,开发复杂度较高。