社交链接添加配置文件 #49
11
.env
@ -10,18 +10,13 @@ VITE_DESC_HELLO_OTHER = "Oops !"
|
|||||||
VITE_DESC_TEXT_OTHER = "哎呀,这都被你发现了( 再点击一次可关闭 )"
|
VITE_DESC_TEXT_OTHER = "哎呀,这都被你发现了( 再点击一次可关闭 )"
|
||||||
|
|
||||||
# 社交链接
|
# 社交链接
|
||||||
VITE_SOCIAL_GITHUB = "imsyy"
|
## 请在根目录下的 socialLinks.json 文件中配置
|
||||||
VITE_SOCIAL_GITEE = "imsyy"
|
|
||||||
VITE_SOCIAL_QQ = "1539250352"
|
|
||||||
VITE_SOCIAL_EMAIL = "one@imsyy.top"
|
|
||||||
VITE_SOCIAL_TELEGRAM = "bottom_user"
|
|
||||||
VITE_SOCIAL_TWITTER = "iimmsyy"
|
|
||||||
|
|
||||||
# 网站链接
|
# 网站链接
|
||||||
## 请在 src/components/Links/index.vue 中设置
|
## 请在 src/components/Links/index.vue 文件中配置
|
||||||
|
|
||||||
# 天气 Key
|
# 天气 Key
|
||||||
## 请前往高德开放平台注册 Web服务 Key
|
## 请前往高德开放平台注册 Web服务 Key(免费的)
|
||||||
## 请各位大佬行行好,别再让我超量了
|
## 请各位大佬行行好,别再让我超量了
|
||||||
VITE_WEATHER_KEY = "57eaea5833ff1616cfd1ff2c4cf9b58a"
|
VITE_WEATHER_KEY = "57eaea5833ff1616cfd1ff2c4cf9b58a"
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"github": "https://github.com/imsyy/home",
|
"github": "https://github.com/imsyy/home",
|
||||||
"home": "https://imsyy.top",
|
"home": "https://imsyy.top",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "4.0.0",
|
"version": "4.0.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
BIN
public/images/icon/bilibili.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
public/images/icon/email.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 3.2 KiB |
BIN
public/images/icon/github.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
public/images/icon/qq.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
public/images/icon/telegram.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
public/images/icon/twitter.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
26
socialLinks.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[{
|
||||||
|
"name": "Github",
|
||||||
|
"icon": "/images/icon/github.png",
|
||||||
|
"tip": "去 Github 看看",
|
||||||
|
"url": "https://github.com/imsyy"
|
||||||
|
}, {
|
||||||
|
"name": "BiliBili",
|
||||||
|
"icon": "/images/icon/bilibili.png",
|
||||||
|
"tip": "(゜-゜)つロ 干杯 ~",
|
||||||
|
"url": "https://space.bilibili.com/98544142"
|
||||||
|
}, {
|
||||||
|
"name": "QQ",
|
||||||
|
"icon": "/images/icon/qq.png",
|
||||||
|
"tip": "有什么事吗",
|
||||||
|
"url": "https://wpa.qq.com/msgrd?v=3&uin=1539250352&site=qq&menu=yes"
|
||||||
|
}, {
|
||||||
|
"name": "Email",
|
||||||
|
"icon": "/images/icon/email.png",
|
||||||
|
"tip": "来封 Email ~",
|
||||||
|
"url": "mailto:one@imsyy.top"
|
||||||
|
}, {
|
||||||
|
"name": "Telegram",
|
||||||
|
"icon": "/images/icon/telegram.png",
|
||||||
|
"tip": "你懂的 ~",
|
||||||
|
"url": "https://twitter.com/iimmsyy"
|
||||||
|
}]
|
@ -35,4 +35,14 @@ export const getAdcode = async (key) => {
|
|||||||
export const getWeather = async (key, city) => {
|
export const getWeather = async (key, city) => {
|
||||||
const res = await fetch(`https://restapi.amap.com/v3/weather/weatherInfo?key=${key}&city=${city}`);
|
const res = await fetch(`https://restapi.amap.com/v3/weather/weatherInfo?key=${key}&city=${city}`);
|
||||||
return await res.json();
|
return await res.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取配置
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 获取社交链接
|
||||||
|
export const getSocialLinks = async () => {
|
||||||
|
const res = await fetch("/socialLinks.json");
|
||||||
|
return await res.json();
|
||||||
}
|
}
|
@ -3,69 +3,14 @@
|
|||||||
<div class="social">
|
<div class="social">
|
||||||
<div class="link">
|
<div class="link">
|
||||||
<a
|
<a
|
||||||
id="github"
|
v-for="item in socialLinksData"
|
||||||
:href="socialLinks.github"
|
:key="item.name"
|
||||||
|
:href="item.url"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
@mouseenter="changeTip"
|
@mouseenter="socialTip = item.tip"
|
||||||
@mouseleave="leaveTip"
|
@mouseleave="socialTip = '通过这里联系我吧'"
|
||||||
>
|
>
|
||||||
<Icon size="24">
|
<img class="icon" :src="item.icon" height="24" />
|
||||||
<Github />
|
|
||||||
</Icon>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
id="gitee"
|
|
||||||
:href="socialLinks.gitee"
|
|
||||||
target="_blank"
|
|
||||||
@mouseenter="changeTip"
|
|
||||||
@mouseleave="leaveTip"
|
|
||||||
>
|
|
||||||
<span class="xicon" style="font-size: 24px;">
|
|
||||||
<img src="/images/icon/gitee.png" height="24"/>
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
id="qq"
|
|
||||||
:href="socialLinks.qq"
|
|
||||||
target="_blank"
|
|
||||||
@mouseenter="changeTip"
|
|
||||||
@mouseleave="leaveTip"
|
|
||||||
>
|
|
||||||
<Icon size="24">
|
|
||||||
<Qq />
|
|
||||||
</Icon>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
id="email"
|
|
||||||
:href="socialLinks.email"
|
|
||||||
@mouseenter="changeTip"
|
|
||||||
@mouseleave="leaveTip"
|
|
||||||
>
|
|
||||||
<Icon size="28">
|
|
||||||
<EmailRound />
|
|
||||||
</Icon>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
id="telegram"
|
|
||||||
:href="socialLinks.telegram"
|
|
||||||
target="_blank"
|
|
||||||
@mouseenter="changeTip"
|
|
||||||
@mouseleave="leaveTip"
|
|
||||||
>
|
|
||||||
<Icon size="24">
|
|
||||||
<Telegram />
|
|
||||||
</Icon>
|
|
||||||
</a>
|
|
||||||
<a
|
|
||||||
id="twitter"
|
|
||||||
:href="socialLinks.twitter"
|
|
||||||
target="_blank"
|
|
||||||
@mouseenter="changeTip"
|
|
||||||
@mouseleave="leaveTip"
|
|
||||||
>
|
|
||||||
<Icon size="24">
|
|
||||||
<Twitter />
|
|
||||||
</Icon>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<span class="tip">{{ socialTip }}</span>
|
<span class="tip">{{ socialTip }}</span>
|
||||||
@ -73,66 +18,37 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, reactive } from "vue";
|
import { ref, onMounted } from "vue";
|
||||||
import { Github, Qq, Telegram, Twitter } from "@vicons/fa";
|
import { getSocialLinks } from "@/api";
|
||||||
import { EmailRound } from "@vicons/material";
|
import { Error } from "@icon-park/vue-next";
|
||||||
import { Icon } from "@vicons/utils";
|
|
||||||
|
|
||||||
// 社交链接数据
|
// 社交链接数据
|
||||||
let socialHover = ref(false);
|
let socialLinksData = ref([]);
|
||||||
let socialTip = ref("通过这里联系我吧");
|
let socialTip = ref("通过这里联系我吧");
|
||||||
let socialTipData = {
|
|
||||||
github: "去 Github 看看",
|
// 获取社交链接数据
|
||||||
gitee: "去 Gitee 看看",
|
const getSocialLinksData = () => {
|
||||||
qq: "有什么事吗",
|
getSocialLinks()
|
||||||
email: "来封 Email",
|
.then((res) => {
|
||||||
telegram: "你懂的 ~",
|
socialLinksData.value = res;
|
||||||
twitter: "你懂的 ~",
|
console.log(socialLinksData.value);
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(err);
|
||||||
|
ElMessage({
|
||||||
|
message: "社交链接获取失败",
|
||||||
|
grouping: true,
|
||||||
|
icon: h(Error, {
|
||||||
|
theme: "filled",
|
||||||
|
fill: "#efefef",
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// 社交链接地址
|
onMounted(() => {
|
||||||
const socialLinks = reactive({
|
getSocialLinksData();
|
||||||
github: "https://github.com/" + import.meta.env.VITE_SOCIAL_GITHUB,
|
|
||||||
gitee: "https://gitee.com/" + import.meta.env.VITE_SOCIAL_GITEE,
|
|
||||||
qq:
|
|
||||||
"https://wpa.qq.com/msgrd?v=3&uin=" +
|
|
||||||
import.meta.env.VITE_SOCIAL_QQ +
|
|
||||||
"&site=qq&menu=yes",
|
|
||||||
email: "mailto:" + import.meta.env.VITE_SOCIAL_EMAIL,
|
|
||||||
telegram: "https://t.me/" + import.meta.env.VITE_SOCIAL_TELEGRAM,
|
|
||||||
twitter: "https://twitter.com/" + import.meta.env.VITE_SOCIAL_TWITTER,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 鼠标移入移出事件
|
|
||||||
const changeTip = (e) => {
|
|
||||||
let tipKey = e.target.id;
|
|
||||||
switch (tipKey) {
|
|
||||||
case "github":
|
|
||||||
socialTip.value = socialTipData.github;
|
|
||||||
return true;
|
|
||||||
case "gitee":
|
|
||||||
socialTip.value = socialTipData.gitee;
|
|
||||||
return true;
|
|
||||||
case "qq":
|
|
||||||
socialTip.value = socialTipData.qq;
|
|
||||||
return true;
|
|
||||||
case "email":
|
|
||||||
socialTip.value = socialTipData.email;
|
|
||||||
return true;
|
|
||||||
case "telegram":
|
|
||||||
socialTip.value = socialTipData.telegram;
|
|
||||||
return true;
|
|
||||||
case "twitter":
|
|
||||||
socialTip.value = socialTipData.twitter;
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const leaveTip = () => {
|
|
||||||
socialTip.value = "通过这里联系我吧";
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@ -167,8 +83,12 @@ const leaveTip = () => {
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
a {
|
a {
|
||||||
display: inherit;
|
display: inherit;
|
||||||
span {
|
.icon {
|
||||||
margin: 0 12px;
|
margin: 0 12px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
&:active {
|
||||||
|
transform: scale(0.9);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
src/main.js
@ -14,14 +14,4 @@ const pinia = createPinia();
|
|||||||
pinia.use(piniaPluginPersistedstate);
|
pinia.use(piniaPluginPersistedstate);
|
||||||
|
|
||||||
app.use(pinia);
|
app.use(pinia);
|
||||||
app.mount('#app')
|
app.mount('#app')
|
||||||
|
|
||||||
// if ('serviceWorker' in navigator) {
|
|
||||||
// navigator.serviceWorker.register('/sw.js')
|
|
||||||
// .then(() => {
|
|
||||||
// console.log('Service worker registered.');
|
|
||||||
// })
|
|
||||||
// .catch(err => {
|
|
||||||
// console.log('Failed to register service worker: ', err);
|
|
||||||
// });
|
|
||||||
// }
|
|