【Vue2+3入门到实战】(9)Vue基础之组件的三大组成部分(结构/样式/逻辑) 详细示例

目录

    • 一、学习目标
      • 1.组件的三大组成部分(结构/样式/逻辑)
    • 二、scoped解决样式冲突
      • **1.默认情况**:
      • 2.代码演示
      • 3.scoped原理
      • 4.总结
    • 三、data必须是一个函数
      • 1、data为什么要写成函数
      • 2.代码演示
      • 3.总结

在这里插入图片描述

一、学习目标

1.组件的三大组成部分(结构/样式/逻辑)

​ scoped解决样式冲突/data是一个函数

二、scoped解决样式冲突

1.默认情况

写在组件中的样式会 全局生效 → 因此很容易造成多个组件之间的样式冲突问题。

  1. 全局样式: 默认组件中的样式会作用到全局,任何一个组件中都会受到此样式的影响

  2. 局部样式: 可以给组件加上scoped 属性,可以让样式只作用于当前组件

2.代码演示

BaseOne.vue

<template>
  <div class="base-one">
    BaseOne
  </div>
</template>

<script>
export default {

}
</script>
<style scoped>
</style>

BaseTwo.vue

<template>
  <div class="base-one">
    BaseTwo
  </div>
</template>

<script>
export default {

}
</script>

<style scoped>
</style>

App.vue

<template>
  <div id="app">
    <BaseOne></BaseOne>
    <BaseTwo></BaseTwo>
  </div>
</template>

<script>
import BaseOne from './components/BaseOne'
import BaseTwo from './components/BaseTwo'
export default {
  name: 'App',
  components: {
    BaseOne,
    BaseTwo
  }
}
</script>

3.scoped原理

  1. 当前组件内标签都被添加data-v-hash值 的属性
  2. css选择器都被添加 [data-v-hash值] 的属性选择器

最终效果: 必须是当前组件的元素, 才会有这个自定义属性, 才会被这个样式作用到

在这里插入图片描述

4.总结

  1. style的默认样式是作用到哪里的?
  2. scoped的作用是什么?
  3. style中推不推荐加scoped?

三、data必须是一个函数

1、data为什么要写成函数

一个组件的 data 选项必须是一个函数。目的是为了:保证每个组件实例,维护独立的一份数据对象。

每次创建新的组件实例,都会新执行一次data 函数,得到一个新对象。

在这里插入图片描述

2.代码演示

BaseCount.vue

<template>
  <div class="base-count">
    <button @click="count--">-</button>
    <span>{{ count }}</span>
    <button @click="count++">+</button>
  </div>
</template>

<script>
export default {
  data: function () {
    return {
      count: 100,
    }
  },
}
</script>

<style>
.base-count {
  margin: 20px;
}
</style>

App.vue

<template>
  <div class="app">
    <BaseCount></BaseCount>
  </div>
</template>

<script>
import BaseCount from './components/BaseCount'
export default {
  components: {
    BaseCount,
  },
}
</script>

<style>
</style>

3.总结

data写成函数的目的是什么?
在Vue中,将data属性定义为一个函数的目的是为了每个组件实例都可以独立维护自己的数据副本。当一个组件被多次使用时,如果data属性是一个对象,所有的组件实例将共享同一个数据对象,这可能会导致一个组件的数据被其他组件修改而产生意外的副作用。通过将data定义为一个函数,每个组件实例都会调用该函数来返回一个独立的数据对象,保证组件实例之间的数据隔离。

Vue组件的三大组成部分包括结构、样式和逻辑。

  1. 结构部分:组件的结构由HTML代码组成,用来定义组件的外观和布局。可以使用Vue的模板语法来描述组件的结构,包括标记、指令和插值表达式等。

  2. 样式部分:组件的样式由CSS代码组成,用来定义组件的外观和样式。可以在组件的模板中直接写入样式,也可以将样式放在单独的CSS文件中,并通过引入的方式来使用。

  3. 逻辑部分:组件的逻辑由JavaScript代码组成,用来定义组件的行为和交互。可以在组件的模板中使用Vue的指令和事件绑定等技术来实现组件的交互逻辑。同时,也可以在组件的JavaScript代码中定义组件的属性和方法,以供模板中使用。

这三个部分相互配合,共同组成一个完整的Vue组件。结构部分用来定义组件的外观和布局,样式部分用来定义组件的外观和样式,逻辑部分用来定义组件的行为和交互。通过Vue的组件机制,可以将一个复杂的应用拆分成多个组件,增强代码的可复用性和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285671.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

KBDPL.DLL文件丢失,软件游戏无法启动,修复方法

不少小伙伴&#xff0c;求助说遇到Windows弹窗提示“KBDPL.DLL文件丢失&#xff0c;应用无法启动的问题”&#xff0c;不知道应该怎么修复&#xff1f; 首先&#xff0c;先来了解“KBDPL.DLL文件”是什么&#xff1f; kbdpl.dll是Windows操作系统的一部分&#xff0c;是一个动…

Windows安装MySQL及网络配置

目录 安装MySQL 解压配置my.ini文件 注册mysql服务 初始化 启动MySQL 登入MySQL 修改默认密码 更改自身用户访问权限 安装MySQL 8.0 向日葵的简介 简介 向日葵的作用 优点与缺点 优点 缺点 思维导图 安装MySQL 解压配置my.ini文件 注册mysql服务 命令&#xff1…

WebGL开发模拟器和培训应用

WebGL可以用于开发模拟器和培训应用&#xff0c;提供实时、交互式的图形渲染和模拟环境。以下是在WebGL中开发模拟器和培训应用时的一些建议和常见场景&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。…

《动手学深度学习》学习笔记 第5章 深度学习计算

本系列为《动手学深度学习》学习笔记 书籍链接&#xff1a;动手学深度学习 笔记是从第四章开始&#xff0c;前面三章为基础知道&#xff0c;有需要的可以自己去看看 关于本系列笔记&#xff1a; 书里为了让读者更好的理解&#xff0c;有大篇幅的描述性的文字&#xff0c;内容很…

vue3项目创建

安装node.js vue --version &#xff08;4.5.0以上&#xff09; npm install -g vue/cli vue create 项目名称 npm run dev 启动 npm run build 打包 ———————— vite 创建工程 npm create vuelatest npm i npm run dev 启动 npm run build 打包 项目结构…

2024史上最全的 iOS 各种测试工具集锦!

引言&#xff1a; 随着移动互联网的兴起&#xff0c;APP 测试的越来越被重视&#xff01;Android 系统因为自己的开源性&#xff0c;测试工具和测试方法比较广为流传&#xff0c;但是 iOS 系统的私密性&#xff0c;导致很多测试的执行都有点麻烦。 为了帮助大家更好的执行 iO…

炫酷鼠标悬停随机渐变文本动画效果

如图所示&#xff0c;这是一个很炫酷的鼠标悬停动画效果&#xff0c;卡片的文字随着鼠标的移动不断变化着&#xff0c;且文字的颜色伴随着渐变色跟随鼠标移动&#xff0c;中心部分是突出的LOGO效果&#xff0c;整个交互效果十分引人注目。原效果来源于 evervault.com/customers…

OpenCV | 背景建模

背景建模 逐差法&#xff1a; 由于场景中的目标在运动&#xff0c;目标的影像在不同图像帧中的位置不同。该类算法对时间上连续的两帧图像进行差分运算&#xff0c;不同帧对应的像素点相减&#xff0c; 判断灰度差的绝对值&#xff0c;当绝对值超过一定阈值时&#xff0c;即可…

golang学习专栏

GOLANG专栏 Golang基础教程 Golang基础教程 Golang练手算法 Golang练手算法 Golang设计模式 Golang设计模式 Golang数据结构和算法 Golang数据结构和算法 Golang并发编程 Golang并发编程 ORM框架Gorm Golang ORM框架gorm Golang源码分析 Golang源码分析 MySQL教程 MySQ…

JavaScript 基础一part1.介绍、书写位置、注释、结束符、输入输出语法、字面量

JavaScript 基础一 1.1 介绍1.2 JavaScript 书写位置① 内部 JavaScript② 外部 JavaScript③ 内联 JavaScript 1.3 JavaScript 注释单行注释多行注释 1.4 JavaScript 结束符1.5 JavaScript 输入输出语法&#xff08;1&#xff09;输出&#xff08;2&#xff09;输入JavaScript…

wps将姓名处理格式为:姓**

1.打开wps&#xff0c;在要处理数据右侧一个单元格 输入公式&#xff1a;LEFT(A1,1)&"**"&#xff0c;然后回车 2.按住ctrl和处理好的数据的右下角小方框&#xff0c;往下拖动即可生成格式为&#xff1a;姓** 格式的数据 3.复制生成的数据&#xff0c;右键选择 “…

安装MYsql5.7和8.0以及区别

MySQL5.7的安装步骤 解压 将my.ini文件拷贝到解压的目录下 更改my.ini文件&#xff0c;将安装目录替换&#xff0c;并将\改成\\ 在bin目录下进入cmd 执行安装&#xff1a; mysqld install 失败可能是应为没有用管理员身份执行cmd&#xff0c;要在开始菜单进入cmd &#xff…

2024全网讲解最细的portraiture人像修图磨皮教程

不管磨皮方式怎么变&#xff0c;核心还是均匀像素之间的对比&#xff1b;只要把核心逻辑理解了&#xff0c;就可以以不变应万变。portraiture是一个处理皮肤很强的滤镜&#xff0c;只要把设置理解透彻&#xff0c;就能做出比较好的皮肤。 先讲原理&#xff0c;后面附带一个操作…

强大的隐藏应用 Hides 5中文 for mac

Hides 5是一款Mac上的应用程序&#xff0c;旨在帮助用户隐藏其他应用程序并专注于当前任务&#xff0c;从而提高工作效率。其主要功能包括对焦模式、隐藏所有打开的应用程序、隐藏除当前活动应用之外的所有打开的应用程序、支持全局热键、可定制性、支持多种显示方式等。 Hide…

Django 学习教程- Django模板(Template)

系列 Django 学习教程-介绍与安装-CSDN博客 Django 学习教程- Hello world入门案例-CSDN博客 前言 在上一章节中我们使用django.http.HttpResponse() 来输出 "Hello World&#xff01;"。该方式将数据与视图混合在一起&#xff0c;不符合 Django 的 MTV 思想。 本…

AI加持,openEuler打造数字基础设施全场景操作系统

大模型的东风席卷全球&#xff0c;一些行业已开始基于大模型重构。在数智未来的世界里&#xff0c;AI无疑将扮演重要角色。通过与不同基础技术及产品的结合&#xff0c;AI将促进各领域技术的持续创新&#xff0c;作为核心基础软件的操作系统也不例外。“崛起数字时代&#xff0…

C++初阶------------------入门C++

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

【零基础入门TypeScript】TypeScript - 概述

目录 什么是 TypeScript&#xff1f; TypeScript 的特点 TypeScript 和 ECMAScript 为什么使用 TypeScript&#xff1f; TypeScript 的组件 声明文件 JavaScript 是作为客户端语言引入的。Node.js 的发展也标志着 JavaScript 成为一种新兴的服务器端技术。然而&#xff0…

【复习】计算机操作系统 第七、八章

第七章 文件管理 内存易失&#xff0c;断电即消失&#xff0c;所以得用外存&#xff0c;而文件管理可以帮助用户管理外存上的文件。 7.1 文件概述 数据项&#xff1a; 记录&#xff1a; 文件&#xff1a; 文件类型&#xff1a; 文件层次结构&#xff1a; 7.2 文件的逻辑结构 1…

Flutter+Go_Router+Fluent_Ui仿阿里网盘桌面软件开发跨平台实战-买就送仿小米app开发

Flutter是谷歌公司开发的一款开源、免费的UI框架&#xff0c;可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux 的跨平台开发。 Flutter官方介绍&#xff0c;目前Flutte…