Vue3专栏项目 -- 一、第一个页面(上)

一、ColumnList 组件(专栏列表组件)编码:

该组件要接收一个数组,数组中是一个个专栏数据,数据中包括id、title、avator、description。所以我们定义一个泛型,泛型为id为number类型title为string类型如下这样子

泛型:就是指在类定义时不会设置类中的属性或方法参数的具体类型,而是在类使用时(创建对象)再进行类型的定义。会在编译期检查类型是否错误。

然后定义组件的属性即props,是一个数组list,这个数组即Array符合泛型ColumnProps,因为Array是数组的构造函数它不是一个类型,所以没办法把它断言成一个类型,所以需要用一个方法即PropType,PropType它接受一个泛型,即可以将Array的构造函数返回传入的ColumnProps这种泛型;假如你想把一个构造函数断言成一个类型就需要添加这个PropType,Array as PropTypr<ColumnProps[]> 即把Array断言成一个ColumnProps类型。

使用这样的断言以后有什么样的好处呢,有两个好处,第一个好处是在模板和setup实现中都能获取到类型,如下即可得到props.list是ColumnProps类型,它下面的属性也都有提示补全

ColumnList.vue如下,required:true即指这个是必传的

然后在App.vue中引入bootstrap样式,如下引入该样式文件,然后把节点id="app"改为class="container",它提供的是基本的layout,它会设置一个居中的容器

我们的样式是需要每行3个专栏平均发布,然后我们到bootstrap中找如下,可以看到,是需要row包裹着col,然后一行是12等份的,如果你想一行中均匀放3个就每个col-4,如果你想一行放2个就col-6即可

如下即可得到

然后我们使用如下这个Components中的Card样式,使得它们一个个展示成如下这种框中

h-100意思是让它们高度都为100,shadow-sm意思是让它们都有阴影,这些class

如下,给它们下面这些类,图片即img:rounded-circle即变成椭圆形,border即添加边框,border-light即border的颜色,w-25就是宽度为25,my-3就是添加一个y方向的margin单位是3;文字text:text-left即左侧对齐;按钮用btn-outline-primary即边框样式的按钮;给整个专栏一个margin-bottom即mb-4;即可实现下图样式

Bootstrap就像一个工具箱,它给你提供一个个类名,你直接拿出来组合使用就好,就方便和节省时间。

然后这个avatar即图片有时候是空,我们需要它是空的时候就展示一个默认的图标,在计算属性中在返回的时候去遍历获取的数组,如果avatar不存在则返回本地的这张图

如下图可示,第二个数据没有avatar,就会展示我们本地的column1.jpg图片

二、GlobalHearder 组件(公共标题组件)编码:

有三种状态,一种是用户登录之前的状态,一种是用户登录后的状态;登录之前右侧是两个按钮,分别为登录按钮和注册按钮;登录之后右侧是展示用户名称的下拉菜单。

这个公共标题组件肯定有传入一个属性我们可以称为user,传入当前用户信息,有isLogin是否登录的布尔值,一个name即用户名称,一个id指用户独一无二的id

同理,我们定义一个泛型叫UserProps,其中有isLogin、name、id,然后我们定义组件的属性即props,其中是接收user,user是Object对象类型,Object断言为UserProps类型,required:true即必传。这样我们简单的定义完了组件后,我们就可以创建html了,说到html就可以使用bootstrap帮我们忙了

bootstrap的components中为我们提供了一个叫navbar的

甚至还提供了多种色彩的

我们用中间那个蓝色的所以我们用上

如上就是那个蓝色的标题栏,只是这时候栏里面还没有东西,我们左边是想要展示‘知乎专栏’ 这个标题,所以如下

然后标题栏右侧我们是需要判断是否是登录状态,根据不同状态展示不同的东西,怎么看是否登录,user中有个isLogin的布尔值就是记录是否登录。如下,如果为未登录即user.isLogin为false则展示登录、注册按钮;如果为登录则展示你好xxx

然后我们把它导入到App.vue当中。如下引入GlobalHearder以及泛型UserProps,然后定义当前用户的信息数据即currentUser,并且返回这个数据,然后展示标题栏组件,同时传入当前用户数据。如下,即可实现

后面我们会做第一个挑战,下拉菜单,在这个下拉菜单中我们会步步抽象,把这个下拉菜单最终变成一个可用性的组件

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

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

相关文章

远程服务器 docker XRDP 桌面访问 记录

需求描述: 我现在在远程连接 一台服务器&#xff0c;由于需要实验环境需要GUI 和 桌面系统&#xff0c;但是又想在 docker 中运行。因此&#xff0c;我现在首先需要通过 ssh 连接服务器&#xff0c;然后再服务器中连接 docker. REF: https://github.com/danielguerra69/ubuntu-…

如何全面规避医疗数据安全风险?“一中心三大管控域”打开新思路!

作为医院的核心基础设施&#xff0c;数据库已然演变成了一种具有“资产”属性的重要元素。而随着不断变化的医疗业务场景和日趋严格的合规性要求&#xff0c;如何让安全全方位贯穿医疗数据的生命周期&#xff0c;是一项系统性的建设工作&#xff0c;难点诸多。 基于多年的数据…

vue3专栏项目 -- 项目介绍以及准备工作

这是vue3TS的项目&#xff0c;是一个类似知乎的网站&#xff0c;可以展示专栏和文章的详情&#xff0c;可以登录、注册用户&#xff0c;可以创建、删除、修改文章&#xff0c;可以上传图片等等。 这个项目全部采用Composition API 编写&#xff0c;并且使用了TypeScript&#…

视频剪辑神器:批量高效处理,轻松锐化视频让影片焕然一新!

视频已经成为我们记录生活、分享故事、展示才华的重要形式。然而&#xff0c;面对大量的视频文件&#xff0c;如何批量高效剪辑并提升视频质量&#xff0c;成为了许多人的难题。现在&#xff0c;我们为您带来一款视频剪辑神器&#xff0c;让您轻松处理视频&#xff0c;让您的影…

北京大学-知存科技存算一体联合实验室揭牌,开启知存科技产学研融合战略新升级

5月5日&#xff0c;“北京大学-知存科技存算一体技术联合实验室”在北京大学微纳电子大厦正式揭牌&#xff0c;北京大学集成电路学院院长蔡一茂、北京大学集成电路学院副院长鲁文高及学院相关负责人、知存科技创始人兼CEO王绍迪、知存科技首席科学家郭昕婕博士及企业研发相关负…

leetCode81. 搜索旋转排序数组 II

leetCode81. 搜索旋转排序数组 II 题目思路 可以二分后的具体思路见我的上篇博客 搜索旋转排序数组 代码 class Solution { public:bool search(vector<int>& nums, int target) {if(nums.empty()) return false;int R nums.size() - 1;while(R > 0 &&…

【Three.js基础学习】15.scroll-based-animation

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 课程要点 结合html等场景 做滚动动画 1.遇到的问题&#xff0c; 在向下滚动时&#xff0c;下方会显白&#xff08;部分浏览器&#xff09; 解决&#xff1a;alpha:true …

Finder Windows for Mac:双系统窗口,一键切换!

Finder Windows for Mac是一款专为Mac用户设计的实用工具&#xff0c;它模拟了Windows系统的窗口管理功能&#xff0c;让Mac用户也能享受到类似Windows的窗口操作体验。这款软件的主要功能是提供一个浮动面板&#xff0c;帮助用户随时即时访问打开的Finder窗口列表&#xff0c;…

某东抢购某台脚本——高版本

某东抢购某台脚本——高调 小白操作-学习参考 说明 这个脚本用于自动化京东的秒杀过程&#xff0c;特别是对于高需求商品如茅台。它展示了通过自动化工具模拟用户行为的能力&#xff0c;但同时也涉及到了使用自动化脚本可能违反网站使用条款的问题。使用此类脚本前应确保合…

魔方阵(C语言)

一、魔方阵规律&#xff1b; 8 1 6 3 5 7 4 9 2 魔方阵中各数的排列规律如下&#xff1a; (1)将1放在第1行中间一列。 (2)从2开始直到nn止&#xff0c;各数依次按此规则存放&#xff1a;每一个数存放的行比前一个数的行数减1&#xff0c;列数加1(例如上…

谷歌推出10门免费AI课程,无需教科书及费用

谷歌面向小白以及开发者分别推出了不同的AI课程~ 包含初级、中级和高级。课程章节大致包括&#xff1a;&#xff08;含教学视频、参考材料、测验&#xff09; 基础入门&#xff1a;45分钟深入了解生成式AI 简单实操&#xff1a;30分钟掌握大语言模型 了解如何释放生成式 AI S…

标准IO函数-将bmp图片修改为德国国旗样式

代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> #include <semaphore.h…

展开说说:Android线程池解析

何谓线程池&#xff1f;本人理解是存放和管理线程的一个容器。 线程池存在的意义是什么&#xff1f; 第一&#xff1a;前面博客提到过创建和销毁线程的操作本身是有性能开销的&#xff0c;如果把使用的线程对象存起来下次用的时候直接取出来用就省去了一次创建和销毁的成本&a…

2005-2021年全国各地级市生态环境注意力/环保注意力数据(根据政府报告文本词频统计)

2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 1、时间&#xff1a;2005-2021年 2、范围&#xff1a;2…

C语言栈的含义与栈数据操作代码详解!

引言&#xff1a;在本篇博客中&#xff0c;我们将学到数据结构——栈&#xff0c;讲到栈的含义与关于栈的数据操作代码。栈可以在顺序表、双向链表以及单链表的基础上实现&#xff0c;而于本篇博客中&#xff0c;我们选择在顺序表的基础上实现栈。 更多有关C语言和数据结构知识…

常用算法汇总

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;算法思维逻辑&#x1f43e; 文章目录 1.判断闰年2.计算从某天到某天的天数3.二分4. 前缀和5.差分6.图论6.1dfs6.2走迷宫 7.最短路7.1dijkstra7.2foly 8.并查集9.数论9.1gcd lcm9.2判断素数(质数)9.3分解质因…

Linux设置脚本任意位置执行

记得备份 &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 修改文件之后记得用 source 文件名 刷新 注意&#xff1a;刷新文件之后在当前窗口…

2024/5/7 QTday2

练习&#xff1a;优化登录框&#xff0c;输入完用户名和密码后&#xff0c;点击登录&#xff0c;判断账户是否为 Admin 密码 为123456&#xff0c;如果判断成功&#xff0c;则输出登录成功&#xff0c;并关闭整个登录界面&#xff0c;如果登录失败&#xff0c;则提示登录失败&a…

[CISCN2019 华北赛区 Day1 Web2]ikun

看到提示说一定要找到lv6 这要写脚本来爆破了&#xff0c;用bp是爆破不出来的 发现LV等级都是有参数挂着的 写个脚本看一下 import requests for i in range(1,1000):payload"http://node4.anna.nssctf.cn:28150/shop?page%d"%(i)resrequests.get(payload)if "…

Misc 流量分析

流量分析简介 网络流量分析是指捕捉网络中流动的数据包&#xff0c;并通过查看包内部数据以及进行相关的协议、流量分析、统计等来发现网络运行过程中出现的问题。 在CTF比赛中&#xff0c;以及各种技能大赛对于流量包的分析取证是一种十分重要的题型。通常这类题目都是会提供…