目录

一、介绍

二、为什么要使用 SFC

三、SFC 是如何工作的

四、如何看待关注点分离?


一、介绍

Vue 的单文件组件 (即 *.vue 文件,英文 Single-File Component,简称 SFC) 是一种特殊的文件格式,使我们能够将一个 Vue 组件的模板、逻辑与样式封装在单个文件中。下面是一个单文件组件的示例:

<script>
export default {data() {return {greeting: 'Hello World!'}}
}
</script><template><p class="greeting">{{ greeting }}</p>
</template><style>
.greeting {color: red;font-weight: bold;
}
</style>

如你所见,Vue 的单文件组件是网页开发中 HTML、CSS 和 JavaScript 三种语言经典组合的自然延伸。<template><script> 和 <style> 三个块在同一个文件中封装、组合了组件的视图、逻辑和样式。完整的语法定义可以查阅 SFC 语法说明。

二、为什么要使用 SFC

使用 SFC 必须使用构建工具,但作为回报带来了以下优点:

  • 使用熟悉的 HTML、CSS 和 JavaScript 语法编写模块化的组件
  • 让本来就强相关的关注点自然内聚
  • 预编译模板,避免运行时的编译开销
  • 组件作用域的CSS
  • 在使用组合式API时语法更简单
  • 通过交叉分析模板和逻辑代码能进行更多编译时优化
  • 更好的IDE支持,提供自动补全和对模板中表达式的类型检查
  • 开箱即用的模块热更新 (HMR) 支持

SFC 是 Vue 框架提供的一个功能,并且在下列场景中都是官方推荐的项目组织方式:

  • 单页面应用 (SPA)
  • 静态站点生成 (SSG)
  • 任何值得引入构建步骤以获得更好的开发体验 (DX) 的项目

当然,在一些轻量级场景下使用 SFC 会显得有些杀鸡用牛刀。因此 Vue 同样也可以在无构建步骤的情况下以纯 JavaScript 方式使用。如果你的用例只需要给静态 HTML 添加一些简单的交互,你可以看看 petite-vue,它是一个 6 kB 左右、预优化过的 Vue 子集,更适合渐进式增强的需求。

三、SFC 是如何工作的

Vue SFC 是一个框架指定的文件格式,因此必须交由 @vue/compiler-sfc 编译为标准的 JavaScript 和 CSS,一个编译后的 SFC 是一个标准的 JavaScript(ES) 模块,这也意味着在构建配置正确的前提下,你可以像导入其他 ES 模块一样导入 SFC:

import MyComponent from './MyComponent.vue'export default {components: {MyComponent}
}

SFC 中的 <style> 标签一般会在开发时注入成原生的 <style> 标签以支持热更新,而生产环境下它们会被抽取、合并成单独的 CSS 文件。

在实际项目中,我们一般会使用集成了 SFC 编译器的构建工具,比如 Vite 或者 Vue CLI (基于 webpack),Vue 官方也提供了脚手架工具来帮助你尽可能快速地上手开发 SFC。

现在官方推荐使用 create-vue 来创建基于 Vite 的新项目。

起步

安装:

npm install -g @vue/cli
# OR
yarn global add @vue/cli

创建一个项目:

vue create my-project
# OR
vue ui

四、如何看待关注点分离?

一些有着传统 Web 开发背景的用户可能会因为 SFC 将不同的关注点集合在一处而有所顾虑,觉得 HTML/CSS/JS 应当是分离开的!

要回答这个问题,我们必须对这一点达成共识:前端开发的关注点不是完全基于文件类型分离的。前端工程化的最终目的都是为了能够更好地维护代码。关注点分离不应该是教条式地将其视为文件类型的区别和分离,仅仅这样并不够帮我们在日益复杂的前端应用的背景下提高开发效率。

在现代的 UI 开发中,我们发现与其将代码库划分为三个巨大的层,相互交织在一起,不如将它们划分为松散耦合的组件,再按需组合起来。在一个组件中,其模板、逻辑和样式本就是有内在联系的、是耦合的,将它们放在一起,实际上使组件更有内聚性和可维护性。

即使你不喜欢单文件组件这样的形式而仍然选择拆分单独的 JavaScript 和 CSS 文件,也没关系,你还是可以通过资源导入功能获得热更新和预编译等功能的支持。

单文件组件(SFC)相关推荐

  1. 什么Vue单文件组件(SFC)?

    介绍# Vue 的单文件组件 (即 *.vue 文件,英文 Single-File Component,简称 SFC) 是一种特殊的文件格式,使我们能够将一个 Vue 组件的模板.逻辑与样式封装在单个 ...

  2. Vue3.2单文件组件setup的语法糖总结

    目录 前言 setup语法糖 一.基本用法 二.data和methods 三.计算属性computed 四.监听器watch.watchEffect 五.自定义指令directive 六.import ...

  3. 单文件组件 | Vue.js

    # 单文件组件 通过 Vue School 上的免费视频课程学习单文件组件 # 介绍 Vue 单文件组件(又名 *.vue 文件,缩写为 SFC)是一种特殊的文件格式,它允许将 Vue 组件的模板.逻 ...

  4. Vue多个单文件组件使用

    在project目录下创建components文件夹,然后将所有子组件放入components文件夹下  [创建此目录][文件名的首字母大写] 1.多组件嵌套使用 Child1.vue <tem ...

  5. Vue单文件组件的使用

    项目搭建完成后需要分别对 main.js , index.html , App.vue 文件进行编写代码 index.html <!DOCTYPE html> <html lang= ...

  6. Vue单文件组件环境配置

    单文件组件不能直接运行使用,需要依赖node项目对其进行解析打包,在使用之前需要先进行环境配置 安装node版本管理工具nvm curl -o- https://raw.githubuserconte ...

  7. vue教程2 【Vue组件化编程】 组件的创建和使用 非单文件组件和单文件组件的区别

    组件 实现局部功能的代码和资源的集合 非单文件组件 1.定义组件(创建组件) 2.注册组件 3.使用组件(写组件标签) 定义 使用Vue.extend(options)创建,其中options和new ...

  8. Vue单文件组件基础模板

    背景 相信大家在使用Vue开发项目时,基本都是以单文件组件的形式开发组件的,这种方式好处多多: 1.代码集中,便于开发.管理和维护 2.可复用性高,直接将vue文件拷贝到新项目中 我暂时就想到这两点, ...

  9. Vue 单文件组件||Vue 单文件组件的基本用法||webpack 中配置 vue 组件的加载器|| 在 webpack 项目中使用 vue

    Vue 单文件组件 传统组件的问题和解决方案 1. 问题 1. 全局定义的组件必须保证组件的名称不重复 2. 字符串模板缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 3. 不支持 CS ...

最新文章

  1. 【spring】编程式事务控制
  2. 网络空间安全:社会工程学之信息追踪——学习笔记 利用搜索引擎追踪!
  3. Python实现打印螺旋矩阵功能的方法
  4. Windows命令计算MD5与SHA1/256值
  5. KubeMeet 直播 | 现场直击大规模集群、混合环境下的云原生应用交付难题
  6. svn 与 vs2010
  7. 匈牙利哦模板 二分匹配 完全匹配问题
  8. 解决linux vi报错 Can‘t open file for writing
  9. sequelize 外键关联_用Sequelize计算关联条目
  10. ORACLE学习之绑定变量
  11. ajax前台获取json,ajax与json 获取数据并在前台使用简单实例
  12. Creating and Destroying Objects
  13. 【279天】跃迁之路——程序员高效学习方法论探索系列(实验阶段37-2017.11.11)...
  14. [Noip2007]Core树网的核
  15. Android意图Intent总结代码
  16. SEO应届生,如何快速的了解SEO?
  17. python基础知识-12-模块的了解
  18. 构建红图注册到蓝图中
  19. 跟着小码哥一起学习OC语法,都在这里了
  20. ArcGIS API for JavaScript实现坐标定位

热门文章

  1. 赶紧收藏 | 50个超实用微信小程序,巨好用|||内含免费配音软件
  2. 利用MS计算水分子的径向分布和扩散系数
  3. 蓝牙比较常分析的东西
  4. ARMv8 ARM64 架构 整体介绍
  5. 平面设计基础_平面设计的组成基础第2部分
  6. linux服务端 程序,linux服务端程序tunning过程简要总结
  7. System Performance Tunning Tools
  8. Mac M1 UTM 安装 Ubuntu
  9. GXNU竞赛集训队第一次训练题解
  10. 【ReID】表征学习和度量学习