Github 首页制作
Github 首页制作
- Github 首页制作
- 实验代码
- 实验环境
- 运行说明
- 展示成果
- 页面展示
- 网页标题及图标
- 网页底部
- 接口调试
- 细节实现
- 接口访问
- 整体框架
- 页面标题和图标
- 头部
- 底部
- 中部左边
- 中部右边
- 实验总结
实验代码
本次页面实现的代码都在下面的链接,传送门,请 TA
进行查看
实验环境
Vue-cli
+ Google Chrome
本次实验引用了 iView
官方组件,iView官网
运行说明
将项目克隆到本地
git clone https://github.com/hupf3/myGithub.git
进入到项目目录
cd myGithub
安装项目依赖
npm install
启动项目
npm run dev
在网页中输入
localhost:8080
即可查看页面(注意:需要将浏览器最大化,否则展示效果不好)
展示成果
本部分只展示大致的页面的效果,具体的功能和细节的展示在下方会详述
页面展示
网页标题及图标
网页底部
接口调试
本次实验使用的接口都是根据 github
官方给出的接口文档进行调试的
Github 官方 API 文档:传送门
调试工具:Postman
本次实验中常用的接口,如下:
获取用户资料
https://api.github.com/users/hupf3
获取用户仓库
https://api.github.com/users/hupf3/repos
细节实现
本次实验的页面主要由头部,底部,中部左边个人信息,中部右边菜单栏构成。也设计了页面的标题和图标,下面就分别讲述各部分实现的过程。
接口访问
在 <script>
内部写好了两个函数,分别用来发送 GET
请求,分别获取用户的信息,和用户仓库的信息,并且保存到 user
,repos
变量中
// 获取用户信息接口
getUser:function() {this.axios.get('/hupf3').then(res => {var result = res.datathis.user = result// console.log(this.user.avatar_url)})
},// 获取仓库接口getRepos:function() {this.axios.get('/hupf3/repos').then(res => {var result = res.datathis.repos = result// console.log(result)})}
将这两个函数在 created
周期函数中调用,即可实现在创建该页面的时候就可以获取到二者的数据
created () {// 获取个人数据this.getUser()// 获取仓库this.getRepos()
},data () {return {user:{},repos:[],...}}
整体框架
整体的框架是用 <Row>
组件进行布局的,该组件将页面横向分成了三个部分,分别放置头部,中部,底部的信息
<!-- 设置头部 -->
<Row style="background:#25292e;height:60px;">...
</Row>
<!-- 中部 -->
<Row>...
</Row>
<!-- 底部 -->
<Row>...
</Row>
页面标题和图标
先放一下原版和我设计的对比图:
我将网页的标题设置为 myGithub
,并将图标设计成了蓝色的 logo
改图像我是从 iconfont 上下载的资源。具体的设计代码如下:
<link rel="shortcut icon" href="./static/github.png">
<title>myGithub</title>
头部
首先展示对比图:
可以说是基本实现了所有部件的展示,最左面的 logo
是由 <Button>
实现的
<Button icon="logo-github"></Button>
然后是一个由 <Input>
组件实现的搜索框
<Input suffix="ios-search" placeholder="Search or jump to..." style="background:#25292e;width: 300px;height:35px" />
右面是四个可以点击出发跳转链接的按钮
<!-- 四个功能选项框 -->
<Col style="text-align:left" span="8"><Button type="text" ghost to="https://github.com/pulls">Pull requests</Button><Button type="text" ghost to="https://github.com/issues">Issues</Button><Button type="text" ghost to="https://github.com/marketplace">Marketplace</Button><Button type="text" ghost to="https://github.com/explore">Explore</Button>
</Col>
最右边是根据原 github
主页设计的两个下拉框,是由 <Dropdown>
组件实现的,成果展示如下:
上图可以看到已经获取到了自己的用户名,具体在代码中获取的方法如下:
<DropdownItem>Signed in as {{user.login}}</DropdownItem>
可以看到头像也是成功获取到了,图像的展示使用了 <Avatar>
组件,并且将从接口中获取到的图片地址在属性中进行赋值,即可成功展示图片
<Avatar :src=user.avatar_url />
底部
首先展示对比图:
底部实现的主要就是一个 logo
以及各个可以点击的链接构成的,下面展示部分代码:
<Col span="3"><p style="text-align:left"><Icon type="logo-github"/> © 2020 GitHub, Inc.</p>
</Col>
<Col span="1"><a style="font-size:10px" src="https://docs.github.com/en/free-pro-team@latest/github/site-policy/github-terms-of-service">Terms</a>
</Col>
中部左边
首先展示对比图:
可以看到有自己的头像,用户名,关注自己的人以及自己关注的人,地点,公司等信息,并且有一个按钮进行修改信息。
个人信息都是由接口获取到的:头像 user.avatar_url
、关注者 user.followers
、被关注者 user.following
、公司 user.company
、地点 user.location
,这些信息的展示都放到 <Card>
组件中,并配上适当的 icon
图标
<Card dis-hover :bordered="false" style="text-align:left"><p><Icon type="md-person"/> {{user.login}}</p><Button style="width:310px"><p>Edit profile</p></Button><p><Icon type="md-people"/> {{user.followers}} follower · {{user.following}} following · <Icon type="md-star-outline"/> 0</p><br/><p><Icon type="md-school"/> {{user.company}}</p><p><Icon type="md-locate"/> {{user.location}}</p>
</Card>
中部右边
右边的菜单上方有四个可选择的选项,分别对应了显示不同的页面:
<Row style="width:600px"><Menu mode="horizontal" active-name="1" @on-select="handleChange"><MenuItem name="1"><Icon type="md-book" />Overview</MenuItem><!-- <MenuItem name="2" to="/Repositories"> --><MenuItem name="2"><Icon type="ios-folder-outline" />Repositories {{user.public_repos}}</MenuItem><MenuItem name="3"><Icon type="ios-list-box-outline" />Projects</MenuItem><MenuItem name="4"><Icon type="ios-cube-outline" />Packages</MenuItem></Menu>
</Row>
页面之间的切换我是用的 v-if
进行判断的,根据不同的值来选择不同的模块显示:
<!-- 选择展示6个仓库 -->
<Row style="text-align:left" v-if="isOverview"></Row>
<!-- 展示仓库 -->
<Row style="text-align:left" v-if="isRepositories">
</Row>
<!-- 展示项目 -->
<Row style="text-align:left" v-if="isProjects">
</Row>
<!-- 展示packages -->
<Row style="text-align:center" v-if="isPackages">
</Row>
并且写了一个切换页面的方法函数,主要是对不同的变量进行赋值:
// 切换页面
handleChange(params) {if (params == 1){this.isOverview = truethis.isRepositories = falsethis.isProjects = falsethis.isPackages = false}else if (params == 2){this.isRepositories = truethis.isOverview = falsethis.isProjects = falsethis.isPackages = false}else if (params == 3){this.isProjects = truethis.isOverview = falsethis.isRepositories = falsethis.isPackages = false}else if (params == 4){this.isPackages = truethis.isOverview = falsethis.isProjects = falsethis.isRepositories = false}
}
下面就分别介绍各个页面的实现:
Overview
:该页面展示了从接口获取到的前六个仓库,作为代表显示出来,显示结果如下所示:每个仓库的展示我是用组建
<Card>
实现的,每一个Card
都是由仓库的名字repos[0].name
,仓库的描述repos[0].description
,仓库中主要用到的语言repos[0].language
构成的,并且点击每一个仓库的名称都能够直接跳转到仓库的详细内容页面:如果动图无法显示请点击此处
下面展示其中一个仓库的展示代码:
<h4>Popular repositories</h4> <Col span="12"><Card dis-hover style="text-align:left;width:450px;height:130px;"><Row style="height:40px"><p style="font-size:20px"><a :href=repos[0].html_url>{{repos[0].name}}</a></p></Row><Row style="height:40px"><p style="font-size:10px">{{repos[0].description}}</p></Row><Row style="height:40px"><p style="font-size:15px"><Icon type="md-paper-plane" /> {{repos[0].language}}</p></Row></Card> </Col>
Repositories
:该页面的头部由一个搜索框、两个下拉框、以及一个按钮构成,点击这个按钮会跳转到新建仓库的链接中:<Button type="success" style="margin-left: 10px" to="https://github.com/new"> <Icon type="ios-folder-outline" /> New </Button>
下面就是展示的从接口中获取到的我所有的仓库,显示这些仓库用到了
<List>
组建,每个ListItem
中包括了仓库的名字,仓库用到的语言,仓库最近更新的时间,以及该仓库是否被star
<List item-layout="vertical"><ListItem v-for="item in repos" :key="item.name"><br/><h2><a :href=item.html_url>{{ item.name }}</a></h2><template slot="extra"> <li><br/> <br/><Button type="default" style="text-align:right"> <p v-if="item.stargazers_count === 0"><Icon type="md-star-outline" /> star</p><p v-if="item.stargazers_count === 1"><Icon type="md-star" /> unstar</p></Button></li></template><br/><p><Icon type="md-paper-plane" /> {{item.language}}</p><br/><p style="font-size:10px"><Icon type="ios-time-outline" /> Updated on {{item.updated_at}}</p></ListItem> </List>
仓库的星标功能虽然没有实现点击,但是实现了获取功能,如我在
github
页面中进行星标,通过接口获取到的信息也是星标,实例如下:如果动图无法显示请点击此处
Projects
:该页面展示了自己的Projects
信息,并且有一个搜索框,和两个新添项目的按钮,页面中蓝色的链接文字是实现了跳转链接的功能的packages
:该页面展示了关于Github packages
的一些信息,基本是按照原github
页面进行了完美的还原:并且每个
Learn More
按钮点击之后都会跳转到相应的链接中,图中的每个卡片都是由组件<Card>
制作的:<Card :bordered="true" style="width:300px;text-align:left"><h2><img src="../../static/docker.png" style="width:25px;height:25px"> Docker</h2><p style="color:#596068">A software platform used for building applications based on containers — small and lightweight execution environments.</p><br/><Button to="https://docs.github.com/en/free-pro-team@latest/packages/using-github-packages-with-your-projects-ecosystem/configuring-docker-for-use-with-github-packages">Learn More</Button> </Card>
实验总结
通过本次实验学到了 API
的使用,看了官方文档之后,学到了如何写一份较好的 API
文档,也学会了前端和后端的交互功能。
Github 首页制作相关推荐
- 移动端开发——京东首页制作(流式布局)
移动端开发--京东首页制作(流式布局) 项目准备 初始化基本文件夹 创建index.html 设置视口 引入基本公共样式 引入自己的css样 <!DOCTYPE html> <htm ...
- “青春树儿童摄影网”首页制作
"青春树儿童摄影网"首页制作 一.实验名称: 二.实验日期: 三.实验目的: 四.实验内容: 五.实验步骤: 六.实验结果: 七.源程序: 八.心得体会: 一.实验名称: &quo ...
- 移动端+京东移动端首页制作
一:移动端的viewport 手机拥有了浏览器的初期,人们并没有专门为移动设备设计页面,造成的直接结果就是,访问的页面是直接将电脑页面进行缩放,操作起来有诸多不便,viewport就是用来解决这个问题 ...
- “穿搭速递”首页制作
"穿搭速递"首页制作 一.实验名称: 二.实验日期: 三.实验目的: 四.实验内容: 五.实验步骤: 六.实验结果: 七.源程序: 八.心得体会: 一.实验名称: "穿搭 ...
- 邀请函首页制作过程介绍
邀请函首页制作过程介绍 一.先看一下邀请函首页的布局和要素,根据要素进行排版. 1.1此邀请函的首页大多要素都是照片来组合完成的,我们把照片先导入进来,再确定照片的大小和位置,在加上合适的文字及制作完 ...
- 北京10月meetup---drupal首页制作(转)
下面是我正在编写的教程,也是在上次meetup中提到,我会继续完善下去的 如果要制作一个网站的话,首先想到的就是首页,从首页开始,先得到一个简单的模型,然后再逐步的去实现相关的功能.对于drupal网 ...
- 用GitHub Actions制作Docker镜像
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于GitHub Actions GitHub Act ...
- PC端品优购项目——首页制作
目录 1. 品优购项目规划 1.1 网站制作流程 1.2 品优购项目整体介绍 1.3 品优购项目的学习目的 1.4 开发工具以及技术栈 1.5 总结 1.6 品优购项目搭建工作 1.6.1 创建文件夹 ...
- “学好英语网”首页制作
"学好英语网"首页制作 一.实验名称: 二.实验日期: 三.实验目的: 四.实验内容: 五.实验步骤: 六.实验结果: 七.源程序: 八.心得体会: 一.实验名称: "学 ...
最新文章
- java简单springboot系统_Springboot系列 3 - 建立简单的用户登录系统
- Android 隐式意图的配置
- 一个神奇的数字货币,终结了南非小哥每天步行20公里的烦恼
- python爬取豆瓣电影信息数据
- rabbitmq php类库,RabbitMQ客户端的PHP库
- 《Redis官方教程》-Redis安全
- SD卡, EMMC固化 ,关于bootloader linux
- [CSS3] :nth-child的用法
- 纯html5单击箭头切换图片,简单的实现点击箭头图片切换的js代码
- Micrometer中文文档
- Unet语义分割训练和TensorRT部署
- 关于轩辕剑3外传 swd3eDvd.exe报错问题
- 越狱苹果手机导出网易云音乐歌曲(以及缓存文件转换)
- 五分钟实现 pdf 分页
- cookies、sessions、token区别
- AutoFac在WinForm中的使用
- 写在冬日的第一天--一个女程序员第十六年工作总结
- 商务搜索引擎_外贸研修 | 世界各国常用搜索引擎,开发客户必备!
- Did you mean..?解法
- 什么是网站权重?网站权重查询方法有哪些?
热门文章
- I2C的总线电容 总线的最大电容 400pF限制
- 查看照片EXIF信息的类
- 拉格朗日松弛与分解学习笔记2023.3.8
- ps里面怎么插入流程图_photoshop cs6绘画带箭头简单流程图的操作教程
- 一般绘CAD图用计算机配置,用CAD制图需要电脑什么配置,懂得进来。
- srtp移植到android平台
- Python爬中国知网
- ROS下Python读取ft_300传感器数据
- CAD的一些基本操作(快捷键)
- TensorFlow学习——Tensorflow Object Detection API(1.安装篇)