vue组件详细解释
含义
根据封装的思想,把页面上可重用的UI结构封装为组件,从而方便项目开发维护。
vue中的组件化开发(形式)
规定:组件的后缀名为.vue,App.vue本质就是一个vue的组件。
3个组成部分
每个.vue组件都由三个组成部分构成
-
template:组件的模版结构
-
script:组件的JavaScript行为
-
style:组件的样式
template模板结构中应该只能包含一个根元素,因此若有多个应包含在一个大div中。
script部分
-
export default
:用于导出组件对象或实例,使其可以在其他文件中被引用和使用,并包含以下一切,将这些内容作为一个整体导出,以便在其他地方可以引用和使用该组件。它是将组件的逻辑部分进行封装和导出的关键。 -
data
:定义组件的初始数据。可以是一个对象或一个返回对象的函数。这些数据可以在组件的模板中进行绑定和显示。 -
computed
:定义计算属性,这些属性的值会根据依赖的数据动态计算而来。计算属性的结果会被缓存,只有依赖的数据发生变化时才会重新计算。 -
methods
:定义组件的方法。这些方法可以在组件的模板中绑定到事件或其他触发方式上,并用于处理用户交互、执行业务逻辑等操作。 -
watch
:用于观察和响应数据的变化。可以监听指定的数据或计算属性,当其发生变化时执行相应的操作。 -
created
、mounted
等生命周期钩子函数:这些函数会在组件的生命周期中被自动调用。可以在这些函数中执行一些初始化操作、发送异步请求、订阅事件等。 -
其他自定义的属性和方法:根据需要,可以在
<script>
部分定义其他自定义的属性和方法,用于组件的逻辑处理。
这些成分共同构成了Vue组件的逻辑部分,用于定义组件的数据、计算属性、方法以及生命周期等。通过在<script>
部分编写这些代码,可以实现组件的行为和功能,并与模板进行交互。
示例/分析
<template>
<div class="test-box">
<h3>this is test
组件使用的三个步骤
组件之间的父子关系
project-src-components
所有的组件都放在components里,App可以放到components外。
-
组件在被封装好之后:彼此之间是相互独立的,不存在父子关系。
-
在使用组件的时候:根据彼此的嵌套关系,形成了父子关系、兄弟关系。
三个步骤
-
使用import语法导入需要的组件,
import Left from '@/components/Left.vue'
。 -
使用 components 节点注册组件, 通过components注册的是私有子组件。
-
以标签的形式使用刚才注册的组件。
在组件 A 的 components 节点下,注册了组件 F。 则组件 F 只能用在组件 A 中;不能被用在组件 C 中。
<template>
<div class="app-container">
<h1>App 根组件</h1>
<button @click="flag = !flag">Toggle Flag</button>
<Test info="你好" v-if="flag"></Test>
<hr />
<div class="box">
<!-- 渲染 Left 组件和 Right 组件 -->
<!-- 3. 以标签形式,使用注册好的组件 -->
<Left1></Left1>
<Right></Right>
</div>
</div>
</template>
<script>
// 1. 导入需要使用的 .vue 组件
//左边的Left,Right仅是名字,但是名字须和components与div中的相同。
//通常情况下,`@`符号在Vue项目中被配置为指向项目的根目录。这样做的好处是,无论在项目的哪个文件中,都可以使用`@`符号来导入其他文件,而无需担心相对路径的复杂性。
import Left1 from '@/components/Left.vue'
import Right from '@/components/Right.vue'
import Test from '@/components/Test.vue'
export default {
data() {
return {
flag: true
}
},
// 2. 注册组件
components: {
Left1,
Right,
Test
}
}
</script>
注册全局组件
在vue项目的main.js入口文件中,通过Vue.component()方法可以注册全局组件。
-
'注册名称',尽量使用大写开头,例如:
MyCount
。 -
组件自己里使用自己会报错。
// 导入需要被全局注册的那个组件
import Count from '@/components/Count.vue'
//参数1:字符串格式,表示组件的"注册名称"
//参数2:需要被全局注册的那个组件,与import后相同
Vue.component('MyCount', Count)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!