更强的 TS 类型与 SFC 能力:让“组件写法更简洁 + 类型更可靠”
理解:这不是运行时“原理”,而是写法/工具链的升级,典型就是 <script setup>、defineProps/defineEmits 的类型推导、ref/computed 的类型推导更自然。
<script setup lang="ts">
const props = defineProps<{ title: string }>()
const emit = defineEmits<{ (e: 'save', id: number): void }>()
</script>
SFC = Single File Component(单文件组件): 就是我们写的 .vue 文件。一个 .vue 文件里通常包含三块(这就是它的“能力”核心):
<template>:声明 UI 结构(最终会被编译成渲染函数)<script>/<script setup>:组件逻辑、状态、props/emits、生命周期等<style>:组件样式(可 scoped、可用预处理器如 scss)
“SFC 能力”具体指什么: 它不是一个单独 API,而是一整套编译与工程能力,让我们在一个文件里完成组件的 UI+逻辑+样式,并支持这些特性:
- Scoped CSS:
<style scoped>让样式默认只影响当前组件 <script setup>:更简洁的 Composition API 写法,类型推导更强(Vue3 里非常主流)- 样式/语言扩展:
<style lang="scss">、<script lang="ts"> - 模板语法编译:v-if/v-for、组件插槽等都在 SFC 编译阶段优化
- 热更新体验(HMR):开发时改 .vue 能快速热更新