Vue3 与 TypeScript 核心面试题实战解析
Vue 基础与版本演进
Vue 是一个渐进式 JavaScript 框架。从 2013 年诞生,历经 2.0、2.6 版本,到 2020 年 9 月发布 Vue 3.0(代号海贼王),再到 2021 年 8 月推出 <script setup> 语法糖。
Vue 3 新特性概览
- 组合式 API (Composition API):相比选项式 API,更贴近原生 JS,方便逻辑复用和封装。
- Script Setup 语法糖:在单文件组件中直接编写脚本,无需 setup 函数包裹。
- Teleport 组件:将模板的一部分'传送'到 DOM 结构外层,常用于模态框等场景。
- Fragments (片段):正式支持多根节点的组件。
- Emits 选项:声明自定义事件,
.native修饰符已移除。 - Suspense:实验性异步依赖处理组件。
- CSS 变量绑定:在
<style>中使用v-bind实现状态驱动的 CSS 变量。
常用指令详解
基础指令
{{}}:大括号内为 JS 环境,支持三元表达式或拼接。v-text/v-html:覆盖元素内容,注意 XSS 风险。v-cloak/v-pre/v-once:用于优化渲染性能或防止闪烁,日常开发较少使用。v-bind:动态绑定属性,简写为:。减少 DOM 操作。v-on:事件监听,推荐函数名以on开头,配合事件修饰符(stop, prevent)及系统修饰符使用。v-for:遍历数组、对象或数字。key的作用至关重要,底层 Diff 算法根据 key 决定节点替换、更新或删除,避免 Bug 并提升性能。v-if/v-show:控制显示隐藏。v-if是条件渲染,惰性执行;v-show通过 CSSdisplay切换,适合高频切换场景。v-memo:类似 React.memo,用于指定缓存区域,避免重复渲染。
v-if 与 v-for 优先级
- Vue 2.x:
v-for优先级高于v-if。 - Vue 3.x:
v-if优先级高于v-for,以减少不必要的渲染开销。
Vue2 与 Vue3 核心区别
响应式原理
- Vue 2:基于
Object.defineProperty劫持属性变化。无法监听对象新增属性或数组索引修改,需使用$set或$forceUpdate。 - Vue 3:基于
Proxy拦截整个对象。可监听未定义属性,支持数组索引修改,且拦截方式更多(get, set 等 11 种)。升级原因包括性能优化、对 ES6+ 特性支持更好以及 TypeScript 友好度提升。


