从0开始学前端day1

script setup

在script里写一个setup的作用

  1. 自动注册子组件
  2. 属性和方法无需返回,执行完后自动更新
  3. 支持props和context

Vue 3中的props和context

props是一种用于父子组件通信的机制。父组件可以通过props向子组件传递数据,子组件则可以通过props接收来自父组件的数据。在Vue 3中,使用props的方式与Vue 2基本相同,只是在语法上做了一些改进。具体而言,定义props时可以使用新的PropTypes API来指定属性类型和默认值,也可以使用setup函数中的props选项来接收和使用props。

context是一种用于祖先和后代组件通信的机制。它允许在组件树中的任何位置创建一个共享的数据源,并将其传递给下面的所有后代组件。在Vue 3中,context主要是通过provide和inject两个API实现的。provide用于在祖先组件中注册一个共享的数据源,而inject用于在后代组件中获取该数据源。在使用context时需要注意,这种通信机制是单向的,即只能从祖先组件向后代组件传递数据,而无法反向传递。

总的来说,在Vue 3中,props和context都是非常重要的概念,它们提供了不同层级之间进行数据传递和通信的方法,有助于构建更加灵活和可维护的组件化应用程序。

Vue 3中的attrs、emit、props、slots和expose

attrs:attrs是一个特殊的属性,用于接收父组件传递给子组件的非props属性。在子组件中,可以通过$attrs访问到这些属性,并将其应用于内部元素或组件。这在需要将未知属性传递给子组件或者需要一次性传递多个属性时非常有用。

emit:emit是用于向父组件触发自定义事件的机制。通过在子组件中使用$emit方法,可以触发一个自定义事件,并将数据传递给父组件。父组件可以通过监听这些自定义事件来响应子组件的行为。

props:props是用于父子组件之间进行数据传递的机制,它定义了子组件可以接收的属性。父组件可以通过props向子组件传递数据,子组件通过props来接收和使用这些数据。在Vue 3中,可以使用新的PropTypes API来指定属性类型和默认值,也可以在setup函数中使用props选项来接收和使用props。

slots:slots是用于在组件中插入内容的机制。通过在组件模板中使用标签,可以定义插槽,并将内容插入到插槽中。父组件可以在使用子组件时,通过插槽将内容传递给子组件,并在子组件内部使用标签来展示插槽内容。

expose:expose是用于向父组件暴露内部方法或属性的机制。通过在setup函数中使用expose函数,可以将某些内部方法或属性暴露给父组件使用。这样可以提供一些对外的接口,以便父组件能够访问和操作子组件的内部状态或方法。

综上所述,attrs、emit、props、slots和expose都是Vue 3中与组件相关的重要概念,它们提供了灵活的数据传递、事件通信和内容插入机制,使得组件化开发更加方便和可扩展。

理解父子组件

参考链接

//Father.vue
<template><div ><h2 >我是父组件!</h2><Child msg="hello" @child-click="childCtx" /></div>
</template><script>
import { defineComponent, ref } from 'vue';
import Child from './Child.vue';export default defineComponent({components: {Child},setup(props, context) {const childCtx = (ctx) => {console.log(ctx);}return {childCtx}}
})
</script>//Child.vue
<template><span @click="handleClick">我是子组件! -- msg: {{ props.msg }}</span>
</template><script>
import { defineComponent, ref } from 'vue'export default defineComponent({emits: ['child-click'],props: {msg: String},setup(props, context) {const handleClick = () => {context.emit('child-click', context)}return {props,handleClick}},
})
</script>

在Vue中,

具体而言,使用scoped属性后,Vue会自动将CSS样式加上唯一的作用域选择器,以确保样式只在当前组件中生效
在这里插入图片描述
在这里插入图片描述
用了scoped不能出现嵌套。改成lang=“scss”就可以了
在这里插入图片描述

多了一层template

在这里插入图片描述
运行啥也不显示
在这里插入图片描述
去掉就好了
在这里插入图片描述在这里插入图片描述

100vh - 60px

是一个简单的数学计算,表示屏幕的高度减去60像素。

padding

在CSS中,padding用于设置元素的内边距,即元素内容与边框之间的空间。

padding属性可以设置一个值来统一为四个方向的内边距,也可以分别设置每个方向的内边距。以下是使用padding属性的示例:

.element {padding: 10px;  /* 四个方向的内边距都为10像素 */
}

你还可以使用缩写形式来分别设置每个方向的内边距。顺序为上、右、下、左(顺时针)。例如:

.element {padding: 10px 20px 30px 40px;  /* 上边距为10px,右边距为20px,下边距为30px,左边距为40px */
}

如果只提供两个值,则第一个值表示上下边距,第二个值表示左右边距。例如:

.element {padding: 10px 20px;  /* 上下边距为10px,左右边距为20px */
}

如果只提供一个值,则四个方向的内边距都相等。例如:

.element {padding: 10px;  /* 四个方向的内边距都为10px */
}

你还可以使用padding-toppadding-rightpadding-bottompadding-left属性来单独设置每个方向的内边距。例如:

.element {padding-top: 10px;padding-right: 20px;padding-bottom: 30px;padding-left: 40px;
}

这些属性允许你以像素、百分比或其他CSS单位来指定内边距的大小。

通过设置padding属性,你可以调整元素的内边距,从而控制元素的布局和外观。
在这里插入图片描述
在这里插入图片描述

<style lang="scss">
.layout{.header{border-bottom: 1px solid #ddd;}.container{padding: 10px;background: #f0f0f0;height:calc(100vh - 60px);.left-aside{padding:15px;width: 300px;.post-btn{background: rgb(5, 116, 219);color:#fff;height: 40px;width:100%}}.right-main{background: #ffffff;}}
}
</style>

Vue中使用v-for指令

在Vue中,使用v-for指令迭代渲染元素时,每个被迭代的元素都需要添加一个key属性。这个key属性用于帮助Vue跟踪每个元素的身份,以便在更新DOM时能够更高效地确定元素的变化。

当你在迭代渲染元素时,如果没有为每个元素添加key属性,Vue会发出警告并建议你添加它们。所以你看到的错误信息 “Elements in iteration expect to have ‘v-bind:key’ directives.” 意味着你在使用v-for指令时没有为迭代的元素设置key属性。

为了解决这个问题,你可以在使用v-for指令时添加一个key属性,这个属性的值可以是唯一的标识符,例如元素在列表中的索引或唯一ID。以下是一个示例:

<template><ul><li v-for="item in items" :key="item.id">{{ item.name }}</li></ul>
</template><script>
export default {data() {return {items: [{ id: 1, name: 'Item 1' },{ id: 2, name: 'Item 2' },{ id: 3, name: 'Item 3' }]};}
}
</script>

在上面的示例中,v-for指令用于迭代渲染items数组中的每个元素,并为每个元素设置了key属性,这里使用了item.id作为key的值。

通过为迭代的元素添加key属性,你可以解决警告问题,并帮助Vue更好地管理元素的变化。请确保key的值在迭代范围内是唯一的,这样可以最大程度减少DOM更新的开销。

修改列表样式

ul,li{padding: 0px;margin: 0px;list-style: none;}

这段CSS代码是用于设置ulli元素的样式,并去除默认的列表样式。

padding: 0px;表示将内边距设为0,这样可以将元素内容与边框之间的距离设置为0。

margin: 0px;表示将外边距设为0,这样可以消除元素与其他元素之间的空间,从而让元素更加紧凑。

list-style: none;表示去除默认的列表样式,例如圆点或序号等。这样可以使列表更加简洁,同时也可以避免在一些情况下出现样式上的干扰。

总体来说,这段CSS代码是一个常见的列表重置样式,它可以让列表在不同的浏览器、设备上都保持一致的样式表现,提高页面的可靠性和可维护性。

:class="[‘iconfont’,menu.icon]

这段代码是使用Vue中的动态绑定语法(前面一定要加冒号),将一个数组作为class属性的值进行绑定。数组中的每个元素都会被解析为一个类名,并根据对应的表达式计算结果来决定是否添加该类名。

具体来说,['iconfont', menu.icon]是一个数组,其中包含两个元素:'iconfont’和menu.icon。这里的iconfont是一个静态类名,而menu.icon是一个动态的类名,它的值可能是根据menu对象中的某个属性动态计算得到。

当Vue渲染这段代码时,它会根据menu.icon的值来判断是否添加该类名。如果menu.icon的值存在,那么它会被添加为一个类名;如果menu.icon的值不存在或为空,那么它不会被添加为一个类名。

例如,如果menu.icon的值为'home',则最终渲染出来的class属性值为'iconfont home',表示同时拥有iconfonthome两个类名。

这种方式可以根据数据的变化动态地为元素添加或删除类名,从而实现灵活的样式控制。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cucumber-JVM的示例和运行解析

Cucumber-JVM 是一个支持 Behavior-Driven Development (BDD) 的 Java 框架。在 BDD 中&#xff0c;可以编写可读的描述来表达软件功能的行为&#xff0c;而这些描述也可以作为自动化测试。 Cucumber-JVM 的最小化环境 Cucumber-JVM是BDD的框架&#xff0c; 提供了GWT语法的相…

云原生机器学习平台cube-studio开源项目及代码简要介绍

1. cube-studio介绍 云原生机器学习平台cube-studio介绍&#xff1a;https://juejin.cn/column/7084516480871563272 cube-studio是开源的云原生机器学习平台&#xff0c;目前包含特征平台&#xff0c;支持在/离线特征&#xff1b;数据源管理&#xff0c;支持结构数据和媒体标…

判断电话号码是否重复-excel

有时候重复的数据不需要或者很烦人&#xff0c;就需要采取措施&#xff0c;希望以下的方法能帮到你。 1.判断是否重复 方法一&#xff1a; 1&#xff09;针对第一个单元格输入等号&#xff0c;以及公式countif(查找记录数的范围&#xff0c;需要查找的单元格&#xff09; 2…

Python Web --Django Web框架

场景 近日写了不少Python脚本&#xff0c;例如&#xff1a;爬虫、ocr、模型训练等。我认为可以更加了解python&#xff0c;因为近一个月使用Python给我的感觉比较好&#xff0c;代码比较简单&#xff0c;比java简单很多&#xff0c;而且python自己管理内存&#xff0c;更多依赖…

Modbus RTU转Modbus TCP模块,RS232/485转以太网模块,YL102 多功能串口服务器模块

特点&#xff1a; ● Modbus RTU协议自动转换成Mobus TCP协议 ● 100M高速网卡&#xff0c;10/100M 自适应以太网接口 ● 支持 AUTO MDI/MDIX&#xff0c;可使用交叉网线或平行网线连接 ● RS232波特率从300到256000可设置 ● 工作方式可选择TCP Server, TCP Client, U…

四川天蝶电子商务有限公司助力商家赢在起跑线

随着电商行业的迅猛发展&#xff0c;越来越多的人选择在抖店上开设自己的店铺。作为一家专业的电子商务公司&#xff0c;四川天蝶电子商务有限公司为商家提供了一站式的抖店开店服务&#xff0c;帮助商家轻松开启电商之旅。 首先&#xff0c;四川天蝶电子商务有限公司拥有丰富的…

leetcode贪心算法题总结(一)

此系列分三章来记录leetcode的有关贪心算法题解&#xff0c;题目我都会给出具体实现代码&#xff0c;如果看不懂的可以后台私信我。 本章目录 1.柠檬水找零2.将数组和减半的最少操作次数3.最大数4.摆动序列5.最长递增子序列6.递增的三元子序列7.最长连续递增序列8.买卖股票的最…

事务管理解析:掌握Spring事务的必备技能!

AOP事务管理 1.1 Spring事务简介1.1.1 相关概念介绍1.1.2 转账案例-需求分析1.1.3 转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:创建JdbcConfig配置…

八股文打卡day12——计算机网络(12)

面试题&#xff1a;HTTPS的工作原理&#xff1f;HTTPS是怎么建立连接的&#xff1f; 我的回答&#xff1a; 1.客户端向服务器发起请求&#xff0c;请求建立连接。 2.服务器收到请求之后&#xff0c;向客户端发送其SSL证书&#xff0c;这个证书包含服务器的公钥和一些其他信息…

机器学习之人工神经网络(Artificial Neural Networks,ANN)

人工神经网络(Artificial Neural Networks,ANN)是机器学习中的一种模型,灵感来源于人脑的神经网络结构。它由神经元(或称为节点)构成的层级结构组成,每个神经元接收输入并生成输出,这些输入和输出通过权重进行连接。 人工神经网络(ANN)是一种模仿生物神经系统构建的…

【操作系统】探究驱动奥秘:驱动程序设计的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;Linux专栏&#xff1a;《探秘Linux | 操作系统解密》⏰诗赋清音&#xff1a;月悬苍穹泛清辉&#xff0c;梦随星河徜徉辉。情牵天际云千层&#xff0c;志立乘风意自飞。 目录 &…

数据库——LAMP的搭建及MySQL基操

1.实验内容及原理 1. 在 Windows 系统中安装 VMWare 虚拟机&#xff0c;在 VMWare 中安装 Ubuntu 系统,并在 Ubuntu 中搭建 LAMP 实验环境。 2. 使用 MySQL 进行一些基本操作&#xff1a; &#xff08;1&#xff09;登录 MySQL&#xff0c;在 MySQL 中创建用户&#xff0c;并对…

【正则表达式】

概述 正则表达式又称规则表达式。&#xff08;英语&#xff1a;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式并不仅限于某一种语…

spss统计软件:BM SPSS Statistics 27 (Win/mac)激活版

IBM SPSS Statistics 27 是一款专为数据分析、统计建模、预测分析和决策支持而设计的软件工具。作为SPSS Statistics系列的一部分&#xff0c;这个版本进一步增强了数据分析的功能&#xff0c;改善了用户体验&#xff0c;并确保了软件的稳定性与兼容性。 主要特点包括&#xff…

Spring Boot+RocketMQ 实现多实例分布式环境下的事件驱动

为什么要使用MQ&#xff1f; 在Spring Boot Event这篇文章中已经通过Guava或者SpringBoot自身的Listener实现了事件驱动&#xff0c;已经做到了对业务的解耦。为什么还要用到MQ来进行业务解耦呢&#xff1f; 首先无论是通过Guava还是Spring Boot自身提供的监听注解来实现的事…

Flink on K8S生产集群使用StreamPark管理

&#xff08;一&#xff09;直接部署&#xff08;手动测试用&#xff0c;不推荐&#xff09; Flink on Native Kubernetes 目前支持 Application 模式和 Session 模式&#xff0c;两者对比 Application 模式部署规避了 Session 模式的资源隔离问题、以及客户端资源消耗问题&am…

使用 async-profiler 分析 CPU 和 内存使用情况

async-profiler 是非常主流的 Java Profiling 工具之一&#xff0c;且对 Linux 支持良好&#xff0c;适合分析运行在服务器上的 Java 应用程序在 CPU 和内存上的占用情况。本文介绍一下 async-profiler 的安装和使用方法。 1. 安装 wget https://github.com/jvm-profiling-too…

人工智能 机器学习 深度学习:概念,关系,及区别说明

如果过去几年&#xff0c;您读过科技主题的文章&#xff0c;您可能会遇到一些新词汇&#xff0c;如人工智能&#xff08;Artificial Intelligence&#xff09;、机器学习&#xff08;Machine Learning&#xff09;和深度学习&#xff08;Deep Learning&#xff09;等。这三个词…

Tuxera NTFS for Mac2024免费Mac读写软件下载教程

在日常生活中&#xff0c;我们使用Mac时经常会遇到外部设备不能正常使用的情况&#xff0c;如&#xff1a;U盘、硬盘、软盘等等一系列存储设备&#xff0c;而这些设备的格式大多为NTFS&#xff0c;Mac系统对NTFS格式分区存在一定的兼容性问题&#xff0c;不能正常读写。 那么什…

WPF+Halcon 培训项目实战(1-5):Halcon安装,图像处理,Halcon简单模板匹配

文章目录 前言相关链接项目专栏我个人对就业市场的评价Halcon安装实战1-4&#xff1a;Halcon基础实战5&#xff1a;模板匹配[形状匹配]实战代码 结尾 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主…