Vue:单文件组件
Vue:单文件组件
1、 什么是单文件组件?
在传统的Vue开发里,我们接触的是非单文件组件,它们通常被定义在同一个HTML文件中,随着项目规模的扩大,代码会变得杂乱无章,维护起来极为困难。而单文件组件(Single File Component,SFC)则是Vue提供的一种强大的组织方式,它将一个组件的所有相关代码集中在一个文件里,具有诸多优势。
- 文件与组件的对应关系:单文件组件严格遵循一个文件对应一个组件的原则。这使得代码结构更加清晰,每个组件的功能和实现都被封装在独立的文件中,便于开发者进行管理和维护。比如,在一个大型电商项目中,商品列表组件、购物车组件、用户信息组件等都可以分别存放在不同的单文件组件中,开发者可以快速定位和修改特定组件的代码。
- 文件命名与识别:单文件组件的文件名通常以
.vue结尾,这是Vue框架所规定的。这种文件格式浏览器无法直接打开运行,需要借助Vue框架进行编译。在编译过程中,Vue会将.vue文件中的模板、脚本和样式分别处理,最终转换为浏览器能够识别的HTML、JS和CSS代码。 - 命名规范:单文件组件的文件名命名规范和组件名的命名规范一致,有以下几种常见方式:
- 全部小写:例如
userlist,简洁直观,但在大型项目中可能会降低代码的可读性。 - 首字母大写,后面全部小写:如
Userlist,一定程度上能突出组件的特殊性,便于区分。 - kebab - case命名法:像
user - list,这种命名方式在前端开发中广泛使用,具有良好的可读性,能够清晰地表达组件的功能。 - CamelCase命名法:例如
UserList,与Vue开发者工具的展示风格相呼应,方便在调试和开发过程中快速识别组件。
- 全部小写:例如
需要注意的是,不能使用小驼峰命名法(如 userList),因为它容易与JavaScript变量命名混淆;同时,也不能使用HTML标签名作为组件名,否则会导致浏览器解析时产生歧义。
2、 x.vue文件的内容包括三块
单文件组件 .vue 文件主要由三个部分组成,分别负责组件的结构、交互和样式,它们相互协作,共同构建出完整的组件。
- 结构(
<template>):<template>标签用于定义组件的HTML结构。它遵循HTML语法规范,同时可以使用Vue的指令来实现动态内容的渲染。例如,使用v - for指令可以根据数据列表动态生成DOM元素,使用v - if指令可以根据条件显示或隐藏元素。以下是一个简单的示例:
<template><div><h1>{{ title }}</h1><ul><li v - for="item in items" :key="item.id">{{ item.name }}</li></ul></div>
</template>
- 交互(
<script>):<script>标签内编写的是组件的JavaScript代码,用于处理组件的逻辑。在这个部分,我们可以定义组件的数据、方法、生命周期钩子函数等。例如:
<script>
export default {data() {return {title: '商品列表',items: [{ id: 1, name: '商品1' },{ id: 2, name: '商品2' }]};},methods: {addItem() {this.items.push({ id: this.items.length + 1, name: `商品${this.items.length + 1}` });}},mounted() {console.log('组件已挂载');}
};
</script>
- 样式(
<style>):<style>标签用于编写组件的CSS样式。可以使用普通的CSS语法,也可以结合预处理器(如Sass、Less)来提高样式编写的效率。通过设置scoped属性,可以将样式的作用域限定在当前组件内,避免样式冲突。例如:
<style scoped>
h1 {color: blue;
}
li {list - style: none;
}
</style>
3、 export和import,ES6的模块化语法
在单文件组件的开发中,我们经常需要在不同的文件之间共享和使用组件,这时就需要用到ES6的模块化语法,通过 export 和 import 来实现组件的导出和导入。
- 默认导入和导出
- 导出:使用
export default可以导出一个默认的模块对象。在一个模块中,只能有一个默认导出。例如:
- 导出:使用
// MyComponent.vue
export default {// 组件配置
};
- 导入:使用
import语句导入默认导出的模块,导入时可以使用任意名称。例如:
// main.js
import MyComponent from './MyComponent.vue';
- 按需导入和导出
- 导出:通过
export {a, b}可以将模块中的多个成员分别导出。例如:
- 导出:通过
// utils.js
export const formatDate = (date) => {// 日期格式化逻辑
};
export const calculateTotal = (items) => {// 计算总价逻辑
};
- 导入:使用
import {a, b}语句按需导入模块中的成员。例如:
// main.js
import { formatDate, calculateTotal } from './utils.js';
- 分别导出和导入
- 导出:分别使用
export语句导出变量或函数。例如:
- 导出:分别使用
// config.js
export var apiUrl = 'https://example.com/api';
export function sayHello() {console.log('Hello!');
}
- 导入:通过
import {name, sayHi}导入相应的成员。例如:
// main.js
import { apiUrl, sayHello } from './config.js';
4、 VScode插件
在使用VSCode编写单文件组件时,安装一些插件可以显著提高开发效率。其中,vetur 插件是一个非常实用的选择。
- 高亮显示:安装
vetur插件后,.vue文件中的不同部分(<template>、<script>、<style>)会有不同的颜色高亮显示,使代码结构更加清晰,便于阅读和编写。 - 智能提示:该插件支持代码智能提示功能,当输入特定的代码片段时,会自动弹出相关的建议和补全选项。例如,输入
v -会提示所有可用的Vue指令,输入this.会提示当前组件中定义的所有数据和方法。 - 语法检查:
vetur会对.vue文件进行语法检查,在代码编写过程中实时发现并标记语法错误,帮助开发者及时纠正问题,提高代码质量。
5、 第一个单文件组件
将之前“组件嵌套”的例子修改为单文件组件,无论使用单文件组件还是非单文件组件,都遵循创建组件、注册组件、使用组件这三个基本步骤。

- 文件结构与分工
main.js:创建Vue实例的代码通常放在main.js中,它作为项目的入口文件,负责初始化Vue应用并引入根组件。例如:
import Vue from 'vue';
import App from './App.vue';new Vue({render: h => h(App)
}).$mount('#app');
index.html:剩下的HTML代码一般存放在 index.html 中,它包含一个根容器,用于挂载Vue应用。例如:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF - 8"><title>Vue App</title>
</head>
<body><div id="app"></div><script src="main.js"></script>
</body>
</html>
- 代码执行原理
- 加载HTML页面:浏览器打开
index.html页面,加载根容器<div id="app"></div>。 - 加载Vue核心库:浏览器加载
vue.js文件,使环境具备使用Vue的能力。 - 加载
main.js:在main.js中,使用import语句导入各个组件,完成组件的创建和注册。例如:
- 加载HTML页面:浏览器打开
import App from './App.vue';
import son from './son.vue';
import girl from './girl.vue';
import child from './child.vue';
- 创建Vue实例并渲染:在
main.js中创建Vue实例,将根组件App
渲染到根容器中。Vue实例会编译模板语句,将组件的内容渲染到页面上。
需要注意的是,写完代码后不能直接在浏览器中运行,因为浏览器不认识 .vue 文件和ES6的模块化语法。此时需要安装Vue脚手架,它集成了一系列的构建工具和预设配置,能够帮助我们处理 .vue 文件的编译、ES6语法转换以及项目的打包和部署等操作。
相关文章:
Vue:单文件组件
Vue:单文件组件 1、 什么是单文件组件? 在传统的Vue开发里,我们接触的是非单文件组件,它们通常被定义在同一个HTML文件中,随着项目规模的扩大,代码会变得杂乱无章,维护起来极为困难。而单文件…...
HarmonyOS NEXT开发实战——HUAWEI DevEco Studio 开发指南
概述 HUAWEI DevEco Studio(以下简称 DevEco Studio)是基于 IntelliJ IDEA Community 开源版本打造的一站式开发平台,专为 HarmonyOS 系统上的应用和元服务(以下简称 应用/元服务)提供高效的开发环境。 作为一款专业…...
IntelliJ IDEA 调试技巧指南
在日常开发中,调试是不可或缺的一部分。掌握调试工具的使用可以让我们更高效地定位和解决问题。本文将介绍一些在 IntelliJ IDEA 中常用的调试技巧,希望能帮助你在开发过程中更顺畅地解决问题。 1. 方法断点:快速定位实现类 方法断点可以帮…...
JavaScript变量声明与DOM操作指南
变量声明 1.变量声明有三个 var let 和 const 我们应该用那个呢? 首先var 先排除,老派写法,问题很多,可以淘汰掉… 2.let or const ? 建议: const 优先,尽量使用const,原因是:…...
嵌入式硬件篇---龙芯UART通信
文章目录 前言一、代码结构解析1. 头文件部分作用 2. 宏定义与全局变量龙芯特性 3. 主函数流程关键点 4. UART发送函数龙芯实现 5. 串口配置函数(set_port)龙芯注意事项 6. GPIO控制函数龙芯GPIO特性 7. PWM控制函数龙芯PWM实现 二、龙芯UART深度解析1. …...
[K!nd4SUS 2025] Crypto
最后一个把周末的补完。这个今天问了小鸡块神终于把一个补上,完成5/6,最后一个网站也上不去不弄了。 Matrices Matrices Matrices 这个是不是叫LWE呀,名词忘了,但意思还是知道。 b a*s e 这里的e是高斯分成,用1000…...
随机变量的不同收敛性
随机变量不同收敛性:一场有趣的趋近之旅😜 一、引言 在概率论这个奇妙的世界里,随机变量就像一群调皮的小精灵🧚 它们的行为充满了不确定性。而今天我们要讲的,就是这些小精灵们的 “趋近大冒险”—— 随机变量的不同…...
JavaScript 函数类型详解:函数声明、函数表达式、箭头函数
在 JavaScript 中,函数是构建逻辑的核心单元。本文将通过 定义对比、核心特性 和 使用场景 三个维度,全面解析以下三种函数类型的区别: 函数声明(Function Declaration)函数表达式(Function Expression&am…...
工作记录 2017-02-04
工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors,见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…...
Etcd 服务搭建
💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Etcd 服务搭建预编译的二进制文件安装下载 etcd 的…...
【C++】stack和queue的使用及模拟实现(含deque的简单介绍)
文章目录 前言一、deque的简单介绍1.引入deque的初衷2.deque的结构3.为什么选择deque作为stack和queue的底层默认容器 二、stack1.stack的介绍2.stack的使用3.stack的模拟实现 三、queue1.queue的介绍2.queue的使用3.queue的模拟实现 前言 一、deque的简单介绍(引入…...
Spring Boot - Spring Boot 静态资源映射(默认静态资源映射、自定义静态资源映射)
一、静态资源映射 在 Spring Boot 中,静态资源的映射是指将特定的 URL 路径与静态资源关联起来 静态资源有例如,HTML、CSS、JS、图片等 这使得客户端可以通过 URL 路径访问这些资源 二、默认静态资源映射 概述 Spring Boot 默认会将以下目录中的文件…...
MySQL原理:逻辑架构
目的:了解 SQL执行流程 以及 MySQL 内部架构,每个零件具体负责做什么 理解整体架构分别有什么模块每个模块具体做什么 目录 1 服务器处理客户端请求 1.1 MySQL 服务器端逻辑架构说明 2 Connectors 3 第一层:连接层 3.1 数据库连接池(Conn…...
ora-600 ktugct: corruption detected---惜分飞
接手一个oracle 21c的库恢复请求,通过Oracle数据库异常恢复检查脚本(Oracle Database Recovery Check)脚本检测之后,发现undo文件offline之后,做了resetlogs操作,导致该文件目前处于WRONG RESETLOGS状态 尝试恢复数据库ORA-16433错误 SQL> recover datafile 1; ORA-00283:…...
Houdini :《哪吒2》神话与科技碰撞的创新之旅
《哪吒2》(即《哪吒之魔童闹海》)截止至今日,荣登全球票房榜第五。根据猫眼专业版数据,截至2025年3月15日,《哪吒2》全球累计票房(含预售及海外)超过150.19亿元,超越《星球大战&…...
flink 写入es的依赖导入问题(踩坑记录)
flink 写入es的依赖导入问题(踩坑记录) ps:可能只是flink低版本才会有这个问题 1. 按照官网的导入方式: 2. 你会在运行sql-client的时候完美得到一个错误: Exception in thread "main" org.apache.flink.table.client.SqlClientEx…...
PCL 高斯函数拟合(正太分布)
文章目录 一、简介二、实现代码三、实现效果一、简介 类似于之前最小二乘法的做法,我们需要先确定目标函数: 通过最小二乘法,找到使预测值与实际数据残差平方和最小的参数: 不过由于这是一个非线性最小二乘问题,因此这里无法使用矩阵的形式之间求解它的解析解了,因此这里…...
深度革命:ResNet 如何用 “残差连接“ 颠覆深度学习
一文快速了解 ResNet创新点 在深度学习的历史长河中,2015年或许是最具突破性的一年。这一年,微软亚洲研究院的何恺明团队带着名为ResNet(残差网络)的模型横空出世,在ImageNet图像分类竞赛中以3.57%的错误率夺冠&#…...
Java基础与集合
参考 Java基础知识详解:从面向对象到异常处理-CSDN博客 2024年 Java 面试八股文(20w字)_java面试八股文-CSDN博客 基础知识 java概述 什么是java? java是一种面向对象的编程语言 java特点 面向对象(继承&#…...
【Python 算法零基础 1.线性枚举】
我装作漠视一切,以为这样就可以不在乎 —— 25.3.17 一、线性枚举的基本概念 1.时间复杂度 线性枚举的时间复杂度为 O(nm),其中 n是线性表的长度。m 是每次操作的量级,对于求最大值和求和来说,因为操作比较简单,所以 …...
深入理解 Linux 的 top 命令:实时监控系统性能
在 Linux 系统管理和性能优化中,top 命令是一个不可或缺的工具。它可以实时显示系统的进程信息和资源使用情况,帮助管理员快速定位性能瓶颈。本文将详细介绍 top 命令的输出内容及其使用方法,帮助你更好地掌握系统性能监控。 一、top 命令简介 top 是一个动态显示系统状态的…...
003 SpringCloud整合-LogStash安装及ELK日志收集
SpringCloud整合-LogStash安装及ELK日志收集 文章目录 SpringCloud整合-LogStash安装及ELK日志收集1.安装ElasticSearch和kibana2.Docker安装logstash1.拉取docker镜像2.创建外部挂载目录3.拷贝容器内部文件到宿主机4.修改外部挂载文件5.运行docker容器 3.整合kibana1.进入kiba…...
AI预测体彩排3新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月18日第22弹
前面由于工作原因停更了很长时间,停更期间很多彩友一直私信我何时恢复发布每日预测,目前手头上的项目已经基本收尾,接下来恢复发布。当然,也有很多朋友一直咨询3D超级助手开发的进度,在这里统一回复下。 由于本人既精…...
数据结构入门(1)——算法复杂度
目录 一、前言 二、数据结构 2.1数据结构的概念 2.2数据结构的组成 2.3算法 三、oj题引进 四、复杂度 4.1复杂度的概念 4.2大O渐进表示法 4.3时间复杂度 4.4时间复杂度计算示例 4.4.1示例1 4.4.2示例2 4.4.3示例3 4.4.4示例4 4.4.5示例5 4.4.6示例6 4.4.7示例7 4.4.8示例8 4.5空…...
JavaScript基础-DOM 简介
在现代Web开发中,JavaScript与HTML和CSS一起构成了网页的核心技术。而在这三者之中,DOM(Document Object Model,文档对象模型)作为浏览器处理网页内容的一种接口,扮演着至关重要的角色。通过DOM,…...
VS Code + Git 分支操作指南(附流程图)
VS Code + Git 分支操作指南(附流程图) 本指南将手把手教你如何在 Visual Studio Code (VS Code) 中使用 Git 进行项目开发管理,配合标准分支模型(main、develop、feature/* 等),并附上直观的流程图,适合新手快速上手! 📌 前置准备 安装 Git安装 VS Code安装 VS Cod…...
Oracle ASM Failgroup故障组
Oracle ASM Failgroup故障组 1. 故障组的核心作用2. 故障组的配置规则3. 故障组的设计最佳实践4. 故障组的实际示例场景1:普通冗余(2个故障组)场景2:高冗余(3个故障组,跨数据中心) 关键注意事项…...
【最新版】智慧小区物业管理小程序源码+uniapp全开源
一.系统介绍 智慧小区物业管理小程序,包含小区物业缴费、房产管理、在线报修、业主活动报名、在线商城等功能。为物业量身打造的智慧小区运营管理系统,贴合物业工作场景,轻松提高物业费用收缴率,更有功能模块个性化组合,助力物业节约成本高效运营。 二.搭建环境 系统环…...
DeepSeek搭建本地知识库
1. 注册硅基流动 首先,打开浏览器,访问硅基流动的官方网站。 https://account.siliconflow.cn/ 在注册页面准确输入你的手机号,完成账号注册。这是搭建本地知识库的第一步,为后续获取重要权限做准备。 成功注册后,进…...
实验9 高级搜索技术1
实验9 高级搜索技术1 一、实验目的 (1)掌握高级搜索技术的相关理论,能根据实际情况选取合适的搜索方法; (2)进一步熟悉爬山法搜索技术,掌握其在搜索过程中的优缺点; (3&…...
