Vue3 单文件组件

一个组件的模板、脚本、样式若拆成三个文件维护会非常割裂。单文件组件(Single File Component,简称 SFC)把三者写进同一个 .vue 文件,结构一目了然;配合构建工具还能获得语法高亮、热更新等开发体验,是 Vue 项目中组织组件的主流方式。

为什么用 SFC

  • 就近维护:模板、逻辑、样式同屏查看,改一处即可。
  • 编译期优化:模板会被编译成高效的渲染函数,性能更好。
  • 生态支持:热重载、ESLint 检查、TypeScript 支持开箱即用。

一个完整的 .vue 文件

<template>
  <p>{{ message }}</p>
</template>

<script>
export default {
  data() {
    return { message: '你好,Vue3' }
  },
}
</script>

<style>
p { color: #42b983; }
</style>

template 负责结构,script 负责逻辑,style 负责样式,三个区块各司其职。

script setup 推荐写法

<script setup> 是组合式 API 的语法糖,顶层声明自动暴露给模板:

<script setup>
import { ref } from 'vue'

const message = ref('你好,Vue3')
</script>

<template>
  <p>{{ message }}</p>
</template>

不需要 return、不需要 export default,代码量明显减少。

scoped 局部样式

给 style 加上 scoped,样式就只作用于当前组件:

<style scoped>
.title { font-size: 20px; color: #333; }
</style>

编译后选择器会被加上唯一的 data 属性,避免样式互相污染。

使用子组件

父组件引入即注册,模板中以标签形式使用并传递属性:

<script setup>
import BlogCard from './BlogCard.vue'   // 引入子组件

const title = '组合式 API 入门'
</script>

<template>
  <BlogCard :title="title" />
</template>

子组件通过 props 接收 title,实现父子组件间的数据传递。

小结

SFC 是 Vue 开发的基本单元,日常开发几乎都在写 .vue 文件。把 <script setup>、scoped 样式与组件嵌套用好,就掌握了现代 Vue 项目最常见的组织方式。

笔记加载中…