使用vue全家桶以及v-charts和datav实现一个github可视化大数据界面展示,没有设计搞的原因,只能忽略设计编写一下界面,
- 用户登录以及个人信息展示
- 粉丝数量以及粉丝展示
- 仓库 Stars 详情
- 仓库语言详情
https://developer.github.com/v3
查询多有的API接口https://api.github.com/users/用户名
https://api.github.com/users/用户名/followers
https://api.github.com/users/用户名/repos
https://api.github.com/users/用户名/events
input
做一下校验,不能为空,并封装了一个弹出框,通过弹出框,点击确定触发接口请求数据userName
就是用户要输入的用户名,onLogin () {
this.$axios
.get(`https://api.github.com/users/${this.userName}`)
.then(res => {
const { data } = res;
sessionStorage.setItem("userkey", data.login);
localStorage.setItem("userkey", data.login);
this.$router.push({
name: "Home",
query: { user: data.login }
});
});
}
仓库名称
和点赞量
getStats () {
this.$axios.get(`https://api.github.com/users/${this.userName}/repos`).then((res) => {
let data = res.data;
// 仓库和仓库star 只有star大于0的时候展示
for (var i = 0; i < data.length; i++) {
if (data[i].stargazers_count > 0) {
this.chartDatas.rows.push({
'名称': data[i].name,
'star数量': data[i].stargazers_count
})
}
}
}
export default {
header: ['列1', '列2', '列3'],
data: [
['行1列1', '行1列2', '行1列3'],
['行2列1', '行2列2', '行2列3'],
['行3列1', '行3列2', '行3列3'],
['行4列1', '行4列2', '行4列3'],
['行5列1', '行5列2', '行5列3'],
['行6列1', '行6列2', '行6列3'],
['行7列1', '行7列2', '行7列3'],
['行8列1', '行8列2', '行8列3'],
['行9列1', '行9列2', '行9列3'],
['行10列1', '行10列2', '行10列3']
]
}
需要我们处理成他们那样,从接口中,获取到需要的数据,遍历循环,在接口中需要拿到用户名
getEvents () {
this.$axios.get(`https://api.github.com/users/${this.userName}/events`).then(res => {
let { data } = res;
let dataAry = [];
if (data) {
for (let i = 0; i < data.length; i++) {
let date = data[i].created_at.split('T')[0]
if (data[i].payload.commits) {
data[i].payload.commits.forEach(ele => {
dataAry.push([date, data[i].type, data[i].repo.name, ele.message])
})
}
}
}
this.config = {
header: ['操作时间', '类型', '操作的仓库', '备注'],
data: dataAry
}
})
}
https://api.github.com/users/用户名
请求接口就可以拿到了userName
登录用户名,就可以拿到个人所有粉丝,一开始我就下让展示9个,剩下的需要点击查看更多
会把所有的粉丝都列举出来getFans () {
// 获取粉丝
this.$axios.get(`https://api.github.com/users/${this.userName}/followers`).then((res) => {
let { data } = res
if (data.length > 0) {
this.fans = data
}
})
},
到这里所有的工作都已接近尾声,剩下的就是在优化优化细节,项目已经上传到github源码仓库,需要的可以取github下载,如果感觉可以的话,求Star
一下,一次鼓励