Vue3 与 TypeScript 高频面试题梳理
初探与基础概念
谈谈对 Vue 的理解及版本演进
Vue 是一个渐进式 JavaScript 框架。发展历程如下:
- 2013 年诞生
- 2016 年发布 2.0 版本
- 2019 年发布 2.6 版本
- 2020 年 9 月发布 3.0(代号海贼王)
- 2021 年 8 月支持
<script setup>语法糖
Vue 3 值得关注的新特性:
- 组合式 API (Composition API):相比选项式 API,更贴近原生 JS 逻辑,方便逻辑复用和封装。
- 单文件组件中的组合式 API 语法糖 (
<script setup>):在setup函数中直接写变量,无需返回,代码更简洁。 - Teleport 组件:将组件内部的一部分模板'传送'到 DOM 结构外层的位置,常用于模态框等场景。
- Fragments 片段:正式支持多根节点的组件,不再需要包裹一个父元素。
- Emits 组件选项:用于声明由组件触发的自定义事件,
.native修饰符已移除。 - Suspense:实验性组件,用于处理异步依赖。
- 状态驱动的 CSS 变量:在
<style>中使用v-bind。
Vue 常用指令速查
- {{ }}:大括号内是 JS 环境,支持三元表达式、拼接等。
- v-text / v-html:覆盖元素内容,注意 XSS 风险。
- v-cloak / v-pre / v-once:开发中较少使用,主要用于优化首屏或跳过编译。
- v-bind (: ):绑定属性数据,减少 DOM 操作。简写为冒号。
- v-on (@ ):事件监听。推荐函数名以
on开头,在 methods 中定义。支持事件修饰符(stop, prevent, 键盘/系统修饰符)。 - v-for:遍历数组、对象或数字。
key的作用至关重要,底层 Diff 算法根据 key 决定替换、修改或删除节点,避免 Bug 并提升性能。优先级上,Vue 3 中v-if总是优先于v-for。 - v-if / v-show:
v-if:真正的条件渲染,惰性执行,切换时销毁重建组件和事件监听器。适用于不频繁切换的场景。v-show:始终渲染,仅通过 CSSdisplay切换。适用于高频切换场景(如 Tab 切换、弹窗),减少 DOM 操作开销。
- v-memo:类似 React 的 memo,用于缓存特定块,避免重复渲染。
Vue 2 与 Vue 3 的核心区别
从框架设计思想看,Vue 3 更贴近原生 JS,去除了抽象层(如过滤器、混入),引入 Hooks 思想(组合式 API)。
- 响应式原理:Vue 2 使用
Object.defineProperty,无法监听对象新增属性;Vue 3 使用Proxy,可拦截整个对象,支持未定义属性,且性能更强。 - 构建工具:Webpack 改为 Vite,启动速度显著提升。


