组件化开发

一、引言

Vue.js 的组件化开发是其核心特性之一,它允许开发者将复杂的界面拆分为可复用的、独立的、小的组件,从而提高开发效率和代码的可维护性。

二、关键点

        1.组件的定义

在components下创建.vue文件timecard.vue用来编辑内容。

文件创建完毕后,在timecard.vue内编写内容。以演出预告为例,包括演出节目、演出时间、演出状态。

<div class="content">
        <div>演出节目</div>
        <div>演出时间</div>
        <div>演出状态:</div>
    </div>

然后设置该div的样式

.content {
    box-shadow: 1px 1px 1px 1px #ccc;
    width: 300px;
    height: 50px;
    margin: 10px;
    padding: 10px;
    border-radius: 5px;
}

接着设置index.vue,在index.vue中的div设置标题和timecard的内容。同时在script中引入components文件中的timecard.vue。

 设置完成后打开终端进入locahost查看

 

2.组件的传参:

   1.父传子:

   我们在 timecard内传属性name

        <TimeCard :name="'张三'"></TimeCard>

 然后在timecard中声明一个变量props用definprops来接受这个属性

const props=defineProps({
    name:String
})
console.log(props);

包含两个值,第一个name表示的是属性名,第二个string表示的是属性类型 

打开html可以看到name已经被传过来了

接着复制一个更改name的值 

 接着我们在index.vue中创建一个存放演出数据的数组,然后在timecard标签中循环这个数组

<template>
    <div class="content">
    <div>演出节目:{{ props.title }}</div>
    <div>演出时间:{{ props.start }}~{{ props.end }}</div>

    </div>
</template>

<script setup>
const props = defineProps({
    title: String,
    start: String,
    end: String
})
console.log(props);
</script>

<style scoped>
.content {
    box-shadow: 1px 1px 1px 1px #ccc;
    background-color: #fff;
    width: 300px;
    margin: 10px;
    padding: 10px;
    border-radius: 5px;
}
</style>

引入计算函数和响应对象

import { computed, ref } from 'vue';

 声明状态的变量名,然后获取当前时分秒

const date = new Date();
let time = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`

之后根据时间来判断演出状态

let status = computed(() => {
    // 判断演出状态1.未开始 2.进行中 3.已结束
    if(time<props.start){
        return{
            color: '#0000ff',
            msg: '未开始'
        };
    }else{
        if(time<props.end){
            return{
                color: '#00ff00',
                msg: '进行中'
            };
        }else{
            return {
                color: '#aaaaaa',
                msg: '已结束'
            };
        }
    }
})

这样就可以根据首页传来的演出信息来显示演出信息的状态

TimeCard.vue

<template>
    <div class="content" :style="{color: status.color}">
        <div>演出节目:{{ props.title }}</div>
        <div>演出时间:{{ props.start }}~{{ props.end }}</div>
        <div>演出状态:{{ status.msg }}</div>
    </div>
</template>

<script setup>
import { computed, ref } from 'vue';
const props = defineProps({
    title: String,
    start: String,
    end: String,
    status: String
})
const date = new Date();
let time = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`
let status = computed(() => {
    // 判断演出状态1.未开始 2.进行中 3.已结束
    if(time<props.start){
        return{
            color: '#0000ff',
            msg: '未开始'
        };
    }else{
        if(time<props.end){
            return{
                color: '#00ff00',
                msg: '进行中'
            };
        }else{
            return {
                color: '#aaaaaa',
                msg: '已结束'
            };
        }
    }
})
console.log(props);
</script>

<style scoped>
.content {
    box-shadow: 1px 1px 1px 1px #ccc;
    background-color: #fff;
    width: 300px;
    margin: 10px;
    padding: 10px;
    border-radius: 5px;
}
</style>

 index.vue

<template>
    <div>
        <h1>index页面</h1>
        <TimeCard v-for="(item, index) in list" :key="index" :title="item.title" :start="item.start" :end="item.end">
        </TimeCard>
    </div>
</template>

<script setup>
import TimeCard from '@/components/TimeCard.vue';
let list = [
    {
        title: "演出一",
        start: '08:00:00',
        end: '09:00:00',
        status:'未开始'
    },
    {
        title: "演出二",
        start: '13:00:00',
        end: '14:00:00',
        status:'进行中'
    },
    {
        title: "演出三",
        start: '16:00:00',
        end: '18:00:00',
        status:'已结束'
    }
]

</script>

<style lang="scss" scoped></style>

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

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

相关文章

我的导航学习笔记仓库大改版,欢迎关注!!

链接&#xff1a;https://github.com/LiZhengXiao99/Navigation-Learning 我的导航学习笔记&#xff0c;内容涵盖导航定位开源程序的源码解读 ( 包括&#xff1a;RTKLIB、GAMP、SoftGNSS、KF-GINS、ORB-SLAM3 等)、各种导航设备的使用方式、书籍讲义、博客翻译、开源项目梳理、…

python爬取微博话题、关键词下方的所有帖子

文章目录 github repository项目介绍输出安装必备库获取cookiegithub repository 网址:https://github.com/dataabc/weibo-search 在GitHub获取到的非常成熟的微博话题、关键词等微博帖子的获取方案,并且可以指定一个或多个关键词,指定获取微博类型,指定获取日期等等。 项…

文件处理(二)

CSV文件的读取和写入 CSV文件的操作 csv是逗号分隔符文本格式&#xff0c;常用于数据交换、Excel文件和数据库数据的导入和导出。 与Excel文件不同&#xff0c;CSV文件中&#xff1a; 值没有类型&#xff0c;所有值都是字符串不能指定字体颜色等样式不能指定单元格的宽高&…

全网最全100个AI工具导航网站合集

随着ChatGPT年前的爆火&#xff0c;人工智能也变成当今最热门的领域之一&#xff0c;它正在改变着我们的生活和工作方式。无论你是想要学习人工智能的基础知识&#xff0c;还是想要利用人工智能来提升你的业务效率和创新能力&#xff0c;都需要找到合适的AI工具来帮助你实现目标…

VS Code安装Live Server插件搭建web网页结合内网穿透实现公网访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&…

数仓建模简介

1 建模的意义 如果把数据看作图书馆里的书&#xff0c;我们希望看到它们在书架上分门别类地放置&#xff1b;如果把数据看作城市的建筑&#xff0c;我们希望城市规划布局合理&#xff1b;如果把数据看作电脑文件和文件夹&#xff0c;我们希望按照自己的习惯有很好的文件夹组织方…

docker小白第十二天

docker小白第十二天 docker network简介 docker不启动时默认的网络情况。 # 停止docker服务 systemctl stop docker.socket systemctl stop docker # 查看docker镜像 docker images输入查看docker镜像命令后&#xff0c;显示未连接到docker服务器 docker启动时网络情况 sy…

async与defer的区别

原文解释 async vs defer attributes - Growing with the Web

【OpenCV • c++】图像平滑处理(1) —— 线性滤波

文章目录 一、平滑处理二、图像滤波三、邻域算子与线性邻域滤波四、方框滤波代码演示 一、平滑处理 平滑处理也称为模糊处理&#xff0c;是一种简单且使用频率很高的图像处理方法&#xff0c;平滑处理的用途有很多&#xff0c;最常见的是用来减少图像上的噪点或者失真。在涉及到…

资深老鸟,性能测试-TPS上不去分析+电商系统TPS计算(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试-TPS上…

YOLOv9详解

1.概述 在逐层进行特征提取和空间转换的过程中&#xff0c;会损失大量信息&#xff0c;例如图中的马在建模过程中逐渐变得模糊&#xff0c;从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说&#xff0c; PGI包含三个部分&#xff0c;&#xff0…

C语言例:表达式 45-35+1^2 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int a;a 4&5-3&&51^2;printf("4&5-3&&51^2 %d\n",a);return 0; } 结果如下&#xff1a;

保姆级教学!微信小程序设计全攻略!

微信小程序开启了互联网软件的新使用模式。在各种微信小程序争相抢占流量的同时&#xff0c;如何设计微信小程序&#xff1f;让用户感到舒适是设计师在产品设计初期应该考虑的问题。那么如何做好微信小程序的设计呢&#xff1f;即时设计总结了以下设计指南&#xff0c;希望对准…

win10 使用 IIS 搭建 FTP

0. 背景 首先描述一下需求&#xff0c;大概情况就是&#xff0c;视频文件是存储在笔记本电脑里面&#xff0c;然后偶尔需要投屏到电视上。之前考虑过是否可以通过U盘拷贝的方式&#xff0c;后来发现不行&#xff0c;这样太局限了&#xff0c;需要先明确可能用到的教程&#xf…

探秘atoi与atof的模拟之路:从原理到实践的全能指南!

目录 ​编辑 一.atoi及atof库函数的工作原理 1.1atoi 1.2atof 1.3使用时的注意事项 注意事项 1. 检查输入字符串是否为 NULL 2. 检查字符串是否仅包含有效的数字字符 3. 检查转换结果是否在预期范围内 4. 使用更健壮的替代函数 二. 模拟实现atoi和atof 2.1模拟 atoi…

服务器相关知识点总结

一、服务器概述 1.服务器的定义 服务器是计算机的一种&#xff0c;是网络中为客户端计算机提供各种服务的高性能的计算机。服务器在网络操作系统的控制下&#xff0c;将与其连接的硬盘、磁带、打印机以及昂贵的专用通讯设备提供给网络上的客户站点共享&#xff0c;也能为网络用…

基于SpringBoot的后勤管理系统【附源码】

后勤管理系统开发说明 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myecli…

MySQL | CRUD

目录 1. Create 2. Retrieve 2.1. SELECT列 2.1.1. 全列查询 2.1.2. 指定列查询 2.1.3. 查询字段为表达式 2.1.4. 为查询结果指定别名 2.1.5. 结果去重 2.2. WHERE条件 2.2.1. 年龄小于19的同学 2.2.2. id在2~3的同学 2.2.3. id为1和4的同学 2.2.4. 姓张的同学及张…

Android启动优化

文章目录 一、启动分析1.1 启动过程分析1.2 启动问题分析 二、优化工具三、业务梳理3.1 方法论3.2 案例 四、其他优化方式4.1 布局优化4.2 线程优化4.3 GC优化4.4 系统调用优化 五、防劣化5.1 性能监控和测试5.2 代码审查 六、总结 一、启动分析 1.1 启动过程分析 Android应用…

【C语言】linux内核pci_save_state

一、中文注释 //include\linux\pci.h /* 电源管理相关的例程 */ int pci_save_state(struct pci_dev *dev);//drivers\pci\pci.c /*** pci_save_state - 在挂起前保存PCI设备的配置空间* dev: - 我们正在处理的PCI设备*/ int pci_save_state(struct pci_dev *dev) {int i;/* X…