增加了动态tdk功能,以及sitemap,robots文件的生成

This commit is contained in:
ZSH 2025-03-27 14:40:36 +08:00
parent 7e968ced6e
commit 6bee1c97d6
55 changed files with 10484 additions and 19371 deletions

View File

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 118 KiB

View File

Before

Width:  |  Height:  |  Size: 258 KiB

After

Width:  |  Height:  |  Size: 258 KiB

View File

Before

Width:  |  Height:  |  Size: 320 KiB

After

Width:  |  Height:  |  Size: 320 KiB

View File

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 395 KiB

View File

Before

Width:  |  Height:  |  Size: 250 KiB

After

Width:  |  Height:  |  Size: 250 KiB

View File

Before

Width:  |  Height:  |  Size: 357 KiB

After

Width:  |  Height:  |  Size: 357 KiB

View File

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 209 KiB

View File

Before

Width:  |  Height:  |  Size: 136 KiB

After

Width:  |  Height:  |  Size: 136 KiB

View File

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 84 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 9.3 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

24
assets/js/dynamic-tdk.js Normal file
View File

@ -0,0 +1,24 @@
// static/js/dynamic-tdk.js
export function updateTDK(tdk) {
document.title = tdk.title;
let metaDescription = document.querySelector('meta[name="description"]');
if (metaDescription) {
metaDescription.setAttribute('content', tdk.description);
} else {
metaDescription = document.createElement('meta');
metaDescription.setAttribute('name', 'description');
metaDescription.setAttribute('content', tdk.description);
document.head.appendChild(metaDescription);
}
let metaKeywords = document.querySelector('meta[name="keywords"]');
if (metaKeywords) {
metaKeywords.setAttribute('content', tdk.keywords);
} else {
metaKeywords = document.createElement('meta');
metaKeywords.setAttribute('name', 'keywords');
metaKeywords.setAttribute('content', tdk.keywords);
document.head.appendChild(metaKeywords);
}
}

View File

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -3,7 +3,7 @@
<div class="footer"> <div class="footer">
<div class="footer-top"> <div class="footer-top">
<div class="footer-top-left"> <div class="footer-top-left">
<div class="footer-top-left-logo"><img src="../assets/logo2.png"> <div class="footer-top-left-logo"><img src="../assets/logo2.webp">
<div class="footer-logo">Buddys Cloud</div> <div class="footer-logo">Buddys Cloud</div>
</div> </div>
<p>不只是您的AWS云服务代理商 更是您云上旅程的可靠伙伴</p> <p>不只是您的AWS云服务代理商 更是您云上旅程的可靠伙伴</p>
@ -87,19 +87,19 @@
<div class="footer-bottom"> <div class="footer-bottom">
<div class="footer-social"> <div class="footer-social">
<a :href="contactLinks.telegram" target="_blank"> <a :href="contactLinks.telegram" target="_blank">
<img src="../assets/icon/Send.png" alt="telegram"/> <img src="../assets/icon/Send.webp" alt="telegram"/>
</a> </a>
<a :href="contactLinks.phone" target="_blank"> <a :href="contactLinks.phone" target="_blank">
<img src="../assets/icon/Phone.png" alt="phone"/> <img src="../assets/icon/Phone.webp" alt="phone"/>
</a> </a>
<a :href="contactLinks.wechat" target="_blank"> <a :href="contactLinks.wechat" target="_blank">
<img src="../assets/icon/Wexin.png" alt="wechat"/> <img src="../assets/icon/Wexin.webp" alt="wechat"/>
</a> </a>
<a :href="contactLinks.facebook" target="_blank"> <a :href="contactLinks.facebook" target="_blank">
<img src="../assets/icon/Facebook.png" alt="facebook"/> <img src="../assets/icon/Facebook.webp" alt="facebook"/>
</a> </a>
<a :href="contactLinks.email" target="_blank"> <a :href="contactLinks.email" target="_blank">
<img src="../assets/icon/Email.png" alt="email"/> <img src="../assets/icon/Email.webp" alt="email"/>
</a> </a>
</div> </div>
</div> </div>

View File

@ -3,22 +3,22 @@
<!-- Mobile view --> <!-- Mobile view -->
<div v-if="isMobile" class="navbar-brand-drawer"> <div v-if="isMobile" class="navbar-brand-drawer">
<div class="drawer-logo"> <div class="drawer-logo">
<img src="../assets/logo.png" alt="Logo" /> <img src="../assets/logo.webp" alt="Logo" />
</div> </div>
<div style="display: flex; justify-content: center; align-items: center;"> <div style="display: flex; justify-content: center; align-items: center;">
<div class="drawer-icons"> <div class="drawer-icons">
<a :href="contactLinks.telegram" target="_blank"> <a :href="contactLinks.telegram" target="_blank">
<img src="../assets/icon/tg.png" alt="Telegram" /> <img src="../assets/icon/tg.webp" alt="Telegram" />
</a> </a>
</div> </div>
<div class="drawer-icons"> <div class="drawer-icons">
<a :href="contactLinks.phone" target="_blank"> <a :href="contactLinks.phone" target="_blank">
<img src="../assets/icon/Phone2.png" alt="Phone" /> <img src="../assets/icon/Phone2.webp" alt="Phone" />
</a> </a>
</div> </div>
<div class="drawer-icons"> <div class="drawer-icons">
<a :href="contactLinks.email" target="_blank"> <a :href="contactLinks.email" target="_blank">
<img src="../assets/icon/Globe.png" alt="Globe" /> <img src="../assets/icon/Globe.webp" alt="Globe" />
</a> </a>
</div> </div>
<MenuClickButton <MenuClickButton
@ -48,7 +48,7 @@
</nuxt-link> </nuxt-link>
</ul> </ul>
<div class="drawer-menu-icon"> <div class="drawer-menu-icon">
<img src="../assets/icon/img.png" alt="Icon" /> <img src="../assets/icon/img.webp" alt="Icon" />
</div> </div>
</div> </div>
@ -57,7 +57,7 @@
<ul class="navbar-list"> <ul class="navbar-list">
<li><nuxt-link :class="{ active: isActive('/') }" to="/">首页</nuxt-link></li> <li><nuxt-link :class="{ active: isActive('/') }" to="/">首页</nuxt-link></li>
<li><nuxt-link :class="{ active: isActive('/calculatePrice') }" to="/calculatePrice">AWS价格计算</nuxt-link></li> <li><nuxt-link :class="{ active: isActive('/calculatePrice') }" to="/calculatePrice">AWS价格计算</nuxt-link></li>
<li><img src="../assets/logo.png" alt="Buddy.com" class="logo" /></li> <li><img src="../assets/logo.webp" alt="Buddy.com" class="logo" /></li>
<li><nuxt-link :class="{ active: isActive('/aboutUs') }" to="/aboutUs">关于我们</nuxt-link></li> <li><nuxt-link :class="{ active: isActive('/aboutUs') }" to="/aboutUs">关于我们</nuxt-link></li>
<li><nuxt-link :class="{ active: isActive('/news') }" to="/news">新闻资讯</nuxt-link></li> <li><nuxt-link :class="{ active: isActive('/news') }" to="/news">新闻资讯</nuxt-link></li>
</ul> </ul>

View File

@ -1,8 +1,9 @@
import path from "path"; // ✅ 先引入 path 模块 import path from "path"; // ✅ 先引入 path 模块
export default { export default {
// Global page headers: https://go.nuxtjs.dev/config-head // Global page headers: https://go.nuxtjs.dev/config-head
head: { head: {
title: 'buddy-nuxt-project', title: 'buddysCloud',
htmlAttrs: { htmlAttrs: {
lang: 'en' lang: 'en'
}, },
@ -14,7 +15,7 @@ export default {
], ],
link: [ link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' } { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
] ],
}, },
serverMiddleware: [ serverMiddleware: [
{ path: "/api/news", handler: path.resolve(__dirname, "server/readNews.js") } { path: "/api/news", handler: path.resolve(__dirname, "server/readNews.js") }
@ -42,8 +43,8 @@ export default {
// https://go.nuxtjs.dev/bootstrap // https://go.nuxtjs.dev/bootstrap
'bootstrap-vue/nuxt', 'bootstrap-vue/nuxt',
'@nuxt/content', '@nuxt/content',
'@nuxtjs/axios',
], ],
// Build Configuration: https://go.nuxtjs.dev/config-build // Build Configuration: https://go.nuxtjs.dev/config-build
build: { build: {
} }

19222
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -10,6 +10,7 @@
}, },
"dependencies": { "dependencies": {
"@nuxt/content": "^1.15.1", "@nuxt/content": "^1.15.1",
"@nuxtjs/axios": "^5.13.6",
"bootstrap": "^4.6.2", "bootstrap": "^4.6.2",
"bootstrap-vue": "^2.22.0", "bootstrap-vue": "^2.22.0",
"core-js": "^3.25.3", "core-js": "^3.25.3",

View File

@ -21,7 +21,7 @@
</div> </div>
<div class="about-content2"> <div class="about-content2">
<div class="photo-left"> <div class="photo-left">
<!-- <img src="../assets/back/ri2.jpg" alt="">--> <!-- <img src="../assets/back/ri2.webp" alt="">-->
</div> </div>
<div class="desc2-right"> <div class="desc2-right">
<div class="about-text"> <div class="about-text">
@ -93,8 +93,20 @@
import NavMenu from "../components/NavMenu.vue"; import NavMenu from "../components/NavMenu.vue";
import FooterMenu from "../components/FooterMenu.vue"; import FooterMenu from "../components/FooterMenu.vue";
import contactUs from "./contactUs.vue"; import contactUs from "./contactUs.vue";
import {updateTDK} from "../assets/js/dynamic-tdk.js";
export default { export default {
components: {NavMenu, FooterMenu,contactUs}, components: {NavMenu, FooterMenu,contactUs},
mounted() {
fetch("/TDK/tdk.json")
.then((res) => res.json())
.then((tdkData) => {
const pageName = this.$route.name || "aboutUs";
const tdk = tdkData[pageName] || tdkData["index"];
updateTDK(tdk);
})
.catch((err) => console.error("Error loading TDK:", err));
},
} }
</script> </script>
@ -156,13 +168,13 @@ export default {
.photo-left { .photo-left {
width: 30%; width: 30%;
height: auto; height: auto;
background: url("../assets/back/ri2.jpg") no-repeat; background: url("../assets/back/ri2.webp") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
.photo-left2 { .photo-left2 {
width: 30%; width: 30%;
height: auto; height: auto;
background: url("../assets/back/chengshi.jpg") no-repeat; background: url("../assets/back/chengshi.webp") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
.photo-left img { .photo-left img {
@ -250,14 +262,14 @@ export default {
.photo-left { .photo-left {
width: 50%; width: 50%;
height: auto; height: auto;
background: url("../assets/back/ri2.jpg") no-repeat; background: url("../assets/back/ri2.webp") no-repeat;
background-size: 200% 110%; background-size: 200% 110%;
background-position: right center; background-position: right center;
} }
.photo-left2 { .photo-left2 {
width: 40%; width: 40%;
height: auto; height: auto;
background: url("../assets/back/chengshi.jpg") no-repeat; background: url("../assets/back/chengshi.webp") no-repeat;
background-size: 200% 100%; background-size: 200% 100%;
} }
.end-about { .end-about {

View File

@ -8,7 +8,7 @@
</div> </div>
<div class="pricimgs-rightBox"> <div class="pricimgs-rightBox">
<div class="pricimgs-rightBox_padding_top"> <div class="pricimgs-rightBox_padding_top">
<div class="pricimgs-rightBox-wh"><img src="../assets/icon/img_1.png"></div> <div class="pricimgs-rightBox-wh"><img src="../assets/icon/img_1.webp"></div>
<div class="pricimgs-rightBox-subtitle"> <div class="pricimgs-rightBox-subtitle">
<div>如何选择合适的配置</div> <div>如何选择合适的配置</div>
@ -34,7 +34,7 @@
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z" d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z"
fill="#fff" p-id="4091"></path></svg></a></span> fill="#fff" p-id="4091"></path></svg></a></span>
</div> </div>
<div class="pricbackground-between-kf"><img src="../assets/icon/Message.png" alt="zx"><a :href="contactLinks.PriceC_CustomerService" <div class="pricbackground-between-kf"><img src="../assets/icon/Message.webp" alt="zx"><a :href="contactLinks.PriceC_CustomerService"
target="_blank">价格详情咨询客服</a> target="_blank">价格详情咨询客服</a>
</div> </div>
</div> </div>
@ -49,10 +49,21 @@ import '../assets/CSS/styles.css';
import NavMenu from "../components/NavMenu.vue"; import NavMenu from "../components/NavMenu.vue";
import FooterMenu from "../components/FooterMenu.vue"; import FooterMenu from "../components/FooterMenu.vue";
import { contactLinks } from '../static/js/contact_link.js'; import { contactLinks } from '../static/js/contact_link.js';
import {updateTDK} from "../assets/js/dynamic-tdk.js";
export default { export default {
components: {NavMenu, FooterMenu}, components: {NavMenu, FooterMenu},
mounted() {
fetch("/TDK/tdk.json")
.then((res) => res.json())
.then((tdkData) => {
const pageName = this.$route.name || "calculatePrice";
const tdk = tdkData[pageName] || tdkData["index"];
updateTDK(tdk);
})
.catch((err) => console.error("Error loading TDK:", err));
},
setup() { setup() {
return { return {
contactLinks contactLinks
@ -92,7 +103,7 @@ export default {
width: 40%; width: 40%;
height: 500px; height: 500px;
padding-right: 5%; padding-right: 5%;
background: url("../assets/helloIMG/priceleft.jpg") no-repeat; background: url("../assets/helloIMG/priceleft.webp") no-repeat;
background-size: 90% 100%; background-size: 90% 100%;
} }
@ -201,7 +212,7 @@ export default {
width: 100%; width: 100%;
height: clamp(200px, 5vh, 400px); height: clamp(200px, 5vh, 400px);
padding: 0; padding: 0;
background: url("../assets/helloIMG/priceleft2.jpg") no-repeat; background: url("../assets/helloIMG/priceleft2.webp") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }

View File

@ -30,23 +30,23 @@
</div> </div>
<div class="footer-social"> <div class="footer-social">
<a :href="contactLinks.telegram" target="_blank"> <a :href="contactLinks.telegram" target="_blank">
<img src="../assets/icon/Send.png" alt="telegram" /> <img src="../assets/icon/Send.webp" alt="telegram" />
</a> </a>
<a :href="contactLinks.phone" target="_blank"> <a :href="contactLinks.phone" target="_blank">
<img src="../assets/icon/Phone.png" alt="phone" /> <img src="../assets/icon/Phone.webp" alt="phone" />
</a> </a>
<a :href="contactLinks.wechat" target="_blank"> <a :href="contactLinks.wechat" target="_blank">
<img src="../assets/icon/Wexin.png" alt="wechat" /> <img src="../assets/icon/Wexin.webp" alt="wechat" />
</a> </a>
<a :href="contactLinks.facebook" target="_blank"> <a :href="contactLinks.facebook" target="_blank">
<img src="../assets/icon/Facebook.png" alt="facebook" /> <img src="../assets/icon/Facebook.webp" alt="facebook" />
</a> </a>
<a :href="contactLinks.email" target="_blank"> <a :href="contactLinks.email" target="_blank">
<img src="../assets/icon/Email.png" alt="email" /> <img src="../assets/icon/Email.webp" alt="email" />
</a> </a>
</div> </div>
</div> </div>
</div> </div>
<FooterMenu v-if="isContactPage"></FooterMenu> <FooterMenu v-if="isContactPage"></FooterMenu>
@ -57,11 +57,23 @@
import NavMenu from "../components/NavMenu.vue"; import NavMenu from "../components/NavMenu.vue";
import FooterMenu from "../components/FooterMenu.vue"; import FooterMenu from "../components/FooterMenu.vue";
import { contactLinks } from "../static/js/contact_link.js"; import { contactLinks } from "../static/js/contact_link.js";
import {updateTDK} from "../assets/js/dynamic-tdk.js";
export default { export default {
components: { components: {
NavMenu, NavMenu,
FooterMenu, FooterMenu,
}, },
mounted() {
fetch("/TDK/tdk.json")
.then((res) => res.json())
.then((tdkData) => {
const pageName = this.$route.name || "contactUs";
const tdk = tdkData[pageName] || tdkData["index"];
updateTDK(tdk);
})
.catch((err) => console.error("Error loading TDK:", err));
},
computed: { computed: {
// Use computed property to check if the current route is '/contactUs' // Use computed property to check if the current route is '/contactUs'
isContactPage() { isContactPage() {
@ -78,7 +90,7 @@ export default {
.contact-view-bg { .contact-view-bg {
width: 100%; width: 100%;
min-height: 100vh; min-height: 100vh;
background: url("../assets/back/ri.jpg") no-repeat; background: url("../assets/back/ri.webp") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
display: flex; display: flex;
justify-content: left; justify-content: left;
@ -93,7 +105,7 @@ export default {
.footer-social { .footer-social {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-self: end; align-self: end;
margin-bottom: 15%; margin-bottom: 15%;
min-height: 58%; min-height: 58%;
} }
@ -188,7 +200,7 @@ export default {
@media (max-width: 850px) { @media (max-width: 850px) {
.contact-view-bg { .contact-view-bg {
background: url("../assets/back/ri2.jpg") no-repeat; background: url("../assets/back/ri2.webp") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
padding: 0; padding: 0;
} }
@ -200,5 +212,8 @@ export default {
min-width: 90%; min-width: 90%;
max-width: 90%; max-width: 90%;
} }
.footer-social{
display: none;
}
} }
</style> </style>

View File

@ -13,7 +13,7 @@
<!-- </div>--> <!-- </div>-->
</div> </div>
<div class="banner-view-rightBox"> <div class="banner-view-rightBox">
<img src="../assets/helloIMG/StartHere.png" alt="buddy.com"/> <img src="../assets/helloIMG/StartHere.webp" alt="buddy.com"/>
</div> </div>
</div> </div>

View File

@ -5,21 +5,32 @@
<div class="homeView_leftBox"> <div class="homeView_leftBox">
<div class="homeView_leftBox_padding_top"></div> <div class="homeView_leftBox_padding_top"></div>
<div class="logoContainer"> <div class="logoContainer">
<img src="@/assets/logo2.png" alt="Logo"/> <img src="@/assets/logo2.webp" alt="Logo" />
</div> </div>
<div class="textContainer"> <div class="textContainer">
<div class="textContainer_title">Buddys Cloud</div> <div class="textContainer_title">Buddys Cloud</div>
<div class="textContainer_title2">AWS云服务全球代理商</div> <div class="textContainer_title2">AWS云服务全球代理商</div>
<div class="right_to"><a :href="contactLinks.Arrow" target="_blank"><img src="../assets/icon/Arrow.png" alt="buddy.com"></a></div> <div class="right_to">
<div class="font-size-subtitle3">可信任的AWS云上伙伴量身定制的AWS云解决方案</div> <a :href="contactLinks.Arrow" target="_blank"
<div class="font-size-paragraph2">Trusted AWS partners on the cloud, Tailor-made AWS cloud solutions</div> ><img src="../assets/icon/Arrow.webp" alt="buddy.com"
/></a>
</div>
<div class="font-size-subtitle3">
可信任的AWS云上伙伴量身定制的AWS云解决方案
</div>
<div class="font-size-paragraph2">
Trusted AWS partners on the cloud, Tailor-made AWS cloud solutions
</div>
</div> </div>
</div> </div>
<div class="homeView_rightBox"></div> <div class="homeView_rightBox"></div>
</div> </div>
<div class="personalized-service"> <div class="personalized-service">
<div class="personalized-service-left"> <div class="personalized-service-left">
<img src="../assets/back/diannao.jpg" alt="Personalized Service Icon"/> <img
src="../assets/back/diannao.webp"
alt="Personalized Service Icon"
/>
</div> </div>
<div class="personalized-service-right"> <div class="personalized-service-right">
<div class="top-content"> <div class="top-content">
@ -27,57 +38,102 @@
<h3>Personalized service</h3> <h3>Personalized service</h3>
</div> </div>
<div class="bottom-content"> <div class="bottom-content">
<p>在Buddy's <p>
Cloud我们相信没有一种云解决方案能够适合所有人这就是为什么我们提供个性化的咨询服务帮助客户了解他们的需求并从众多云服务中选择最合适的</p> 在Buddy's
<p>At Buddy's Cloud, we believe that no one cloud solution is right for everyone, which is why we offer one Cloud我们相信没有一种云解决方案能够适合所有人这就是为什么我们提供个性化的咨询服务帮助客户了解他们的需求并从众多云服务中选择最合适的
personalized consulting services to help customers understand their needs and choose the most suitable one </p>
from a wide range of cloud services.</p> <p>
At Buddy's Cloud, we believe that no one cloud solution is right for
everyone, which is why we offer one personalized consulting services
to help customers understand their needs and choose the most
suitable one from a wide range of cloud services.
</p>
</div> </div>
</div> </div>
</div> </div>
<div class="service-section"> <div class="service-section">
<div class="service-section-mini"> <div class="service-section-mini">
<div class="service-card"> <div class="service-card">
<img src="../assets/icon/Question.png" alt="Technical advice" class="service-icon"/> <img
src="../assets/icon/Question.webp"
alt="Technical advice"
class="service-icon"
/>
<h3>技术咨询 <span>Technical advice</span></h3> <h3>技术咨询 <span>Technical advice</span></h3>
<p>免费提供技术咨询解答您使用AWS服务过程中遇到的任何问题帮助您的业务增长</p> <p>
<p>Free technical consultation to answer all your questions about using AWS services and help your business 免费提供技术咨询解答您使用AWS服务过程中遇到的任何问题帮助您的业务增长
grow.</p> </p>
<p>
Free technical consultation to answer all your questions about using
AWS services and help your business grow.
</p>
</div> </div>
<div class="service-card"> <div class="service-card">
<img src="../assets/icon/File.png" alt="Bill payment" class="service-icon"/> <img
src="../assets/icon/File.webp"
alt="Bill payment"
class="service-icon"
/>
<h3>账单代付 <span>Bill payment</span></h3> <h3>账单代付 <span>Bill payment</span></h3>
<p>与我们合作的组织接受多种货币支付包括人民币美元和其它外币</p> <p>
<p>Affiliated with our organization, accepting a wide range of currencies,including RMB, USD, and tokens.</p> 与我们合作的组织接受多种货币支付包括人民币美元和其它外币
</p>
<p>
Affiliated with our organization, accepting a wide range of
currencies,including RMB, USD, and tokens.
</p>
</div> </div>
<div class="service2-card"> <div class="service2-card">
<h3>服务类型 <span>type of service</span></h3> <h3>服务类型 <span>type of service</span></h3>
<div> <div>
<p>我们的服务不仅限于技术层面更包括帮助客户理解云服务助力他们的业务成长</p> <p>
<p>Our services not only on the technical side, but also on helping customers understand cloud services and 我们的服务不仅限于技术层面更包括帮助客户理解云服务助力他们的业务成长
help their businesses grow.</p> </p>
<p>
Our services not only on the technical side, but also on helping
customers understand cloud services and help their businesses
grow.
</p>
</div> </div>
</div> </div>
<div class="service-card"> <div class="service-card">
<img src="../assets/icon/User.png" alt="Account opening" class="service-icon"/> <img
src="../assets/icon/User.webp"
alt="Account opening"
class="service-icon"
/>
<h3>账户开通 <span>Account opening</span></h3> <h3>账户开通 <span>Account opening</span></h3>
<p>免费安全开设AWS账户账户信息安全无忧您不需要担心账户安全</p> <p>免费安全开设AWS账户账户信息安全无忧您不需要担心账户安全</p>
<p>No real-name and no card registration,safe and stable, and account secretsTake control of your own and <p>
don't need to worry about account security.</p> No real-name and no card registration,safe and stable, and account
secretsTake control of your own and don't need to worry about
account security.
</p>
</div> </div>
<div class="service-card"> <div class="service-card">
<img src="../assets/icon/Checklist.png" alt="Account management" class="service-icon"/> <img
src="../assets/icon/Checklist.webp"
alt="Account management"
class="service-icon"
/>
<h3>账户解锁 <span>Unblock your account</span></h3> <h3>账户解锁 <span>Unblock your account</span></h3>
<p>AWS原生技术支持稳定的账户注册与续期服务</p> <p>AWS原生技术支持稳定的账户注册与续期服务</p>
<p>AWS original technical support, stable account unblocking and renewal.</p> <p>
AWS original technical support, stable account unblocking and
renewal.
</p>
</div> </div>
<div class="service-card"> <div class="service-card">
<img src="../assets/icon/Refresh.png" alt="Channel conversion" class="service-icon"/> <img
src="../assets/icon/Refresh.webp"
alt="Channel conversion"
class="service-icon"
/>
<h3>渠道转换 <span>Channel conversion</span></h3> <h3>渠道转换 <span>Channel conversion</span></h3>
<p>转接代理商原价续费</p> <p>转接代理商原价续费</p>
<p>Convert the agent and renew the originalprice.</p> <p>Convert the agent and renew the originalprice.</p>
@ -86,7 +142,7 @@
<div class="service-menu-wrapper"> <div class="service-menu-wrapper">
<div class="service-card-item"> <div class="service-card-item">
<div class="service-card-icon-container"> <div class="service-card-icon-container">
<img src="../assets/icon/Question.png" alt="Technical advice"/> <img src="../assets/icon/Question.webp" alt="Technical advice" />
</div> </div>
<div class="service-card-text"> <div class="service-card-text">
<span class="service-card-text-chinese">技术咨询</span> <span class="service-card-text-chinese">技术咨询</span>
@ -96,7 +152,7 @@
<div class="service-card-item tem-borderleft"> <div class="service-card-item tem-borderleft">
<div class="service-card-icon-container"> <div class="service-card-icon-container">
<img src="../assets/icon/File.png" alt="Bill payment"/> <img src="../assets/icon/File.webp" alt="Bill payment" />
</div> </div>
<div class="service-card-text"> <div class="service-card-text">
<span class="service-card-text-chinese">账单代付</span> <span class="service-card-text-chinese">账单代付</span>
@ -106,7 +162,7 @@
<div class="service-card-item"> <div class="service-card-item">
<div class="service-card-icon-container"> <div class="service-card-icon-container">
<img src="../assets/icon/User.png" alt="Account opening"/> <img src="../assets/icon/User.webp" alt="Account opening" />
</div> </div>
<div class="service-card-text"> <div class="service-card-text">
<span class="service-card-text-chinese">账户开通</span> <span class="service-card-text-chinese">账户开通</span>
@ -116,7 +172,10 @@
<div class="service-card-item tem-borderleft"> <div class="service-card-item tem-borderleft">
<div class="service-card-icon-container"> <div class="service-card-icon-container">
<img src="../assets/icon/Checklist.png" alt="Unblock your account"/> <img
src="../assets/icon/Checklist.webp"
alt="Unblock your account"
/>
</div> </div>
<div class="service-card-text"> <div class="service-card-text">
<span class="service-card-text-chinese">账户解封</span> <span class="service-card-text-chinese">账户解封</span>
@ -126,7 +185,7 @@
<div class="service-card-item"> <div class="service-card-item">
<div class="service-card-icon-container"> <div class="service-card-icon-container">
<img src="../assets/icon/Refresh.png" alt="Channel conversion"/> <img src="../assets/icon/Refresh.webp" alt="Channel conversion" />
</div> </div>
<div class="service-card-text"> <div class="service-card-text">
<span class="service-card-text-chinese">渠道转换</span> <span class="service-card-text-chinese">渠道转换</span>
@ -143,7 +202,11 @@
<div class="service-process-icons"> <div class="service-process-icons">
<div class="service-process-icons-box"> <div class="service-process-icons-box">
<div class="service-process-icon"> <div class="service-process-icon">
<img src="../assets/icon/Smile.png" alt="Pre-sale" class="icon-image"/> <img
src="../assets/icon/Smile.webp"
alt="Pre-sale"
class="icon-image"
/>
</div> </div>
<div class="service-process-icon-title">售前</div> <div class="service-process-icon-title">售前</div>
<div class="service-process-icon-p">联系客户经理免费咨询</div> <div class="service-process-icon-p">联系客户经理免费咨询</div>
@ -151,22 +214,33 @@
<div class="service-process-icons-box service-process-icons-box2"> <div class="service-process-icons-box service-process-icons-box2">
<div class="service-process-icon"> <div class="service-process-icon">
<img src="../assets/icon/Cart.png" alt="In progress" class="icon-image"/> <img
src="../assets/icon/Cart.webp"
alt="In progress"
class="icon-image"
/>
</div> </div>
<div class="service-process-icon-title">售中</div> <div class="service-process-icon-title">售中</div>
<div class="service-process-icon-p">多种支付方式可选</div> <div class="service-process-icon-p">多种支付方式可选</div>
</div> </div>
<div class="service-process-icons-box3"> <div class="service-process-icons-box3">
<div class="service-process-icon-title">售中</div> <div class="service-process-icon-title">售中</div>
<div class="service-process-icon-p">多种支付方式可选</div> <div class="service-process-icon-p">多种支付方式可选</div>
<div class="service-process-icon"> <div class="service-process-icon">
<img src="../assets/icon/Cart.png" alt="In progress" class="icon-image"/> <img
src="../assets/icon/Cart.webp"
alt="In progress"
class="icon-image"
/>
</div> </div>
</div> </div>
<div class="service-process-icons-box"> <div class="service-process-icons-box">
<div class="service-process-icon"> <div class="service-process-icon">
<img src="../assets/icon/24h.png" alt="After sale" class="icon-image"/> <img
src="../assets/icon/24h.webp"
alt="After sale"
class="icon-image"
/>
</div> </div>
<div class="service-process-icon-title">售后</div> <div class="service-process-icon-title">售后</div>
<div class="service-process-icon-p">技术支持24小时运维</div> <div class="service-process-icon-p">技术支持24小时运维</div>
@ -175,39 +249,48 @@
</div> </div>
</div> </div>
<contactUs></contactUs> <contactUs></contactUs>
<div style="background: #ff6702;padding: 5% 0"> <div style="background: #ff6702; padding: 5% 0">
<div class="team-member-card"> <div class="team-member-card">
<div class="team-member-photo"> <div class="team-member-photo">
<div class="team-member-photo-right-icon"><img src="../assets/icon/img_2.png"></div> <div class="team-member-photo-right-icon">
<img src="../assets/icon/img_2.webp" />
</div>
<div class="team-card-header"> <div class="team-card-header">
<p>Buddy's Cloud</p> <p>Buddy's Cloud</p>
<p class="org_bar"></p> <p class="org_bar"></p>
</div> </div>
<div class="team-card-body"> <div class="team-card-body">
<div class="team-photo"> <div class="team-photo">
<img src="../assets/back/FRANK-03.png" alt="Frank Wang"/> <img src="../assets/back/FRANK-03.webp" alt="Frank Wang" />
</div> </div>
</div> </div>
<div class="team-card-footer"> <div class="team-card-footer">
<div class="team-card-footer-name">Frank Wang <span>AWS Service</span></div> <div class="team-card-footer-name">
<p>知云 懂云 用云 <img src="../assets/icon/img.png" alt=""></p> Frank Wang <span>AWS Service</span>
</div>
<p>知云 懂云 用云 <img src="../assets/icon/img.webp" alt="" /></p>
</div> </div>
</div> </div>
<div class="team-member-info"> <div class="team-member-info">
<h2>Frank Wang</h2> <h2>Frank Wang</h2>
<p class="description"> <p class="description">
AWS中国代理超过十年专业AWS使用经验解决3000+客户的技术问题专业素质强人脉广泛结识AWS原厂技术员和阿里国际总代理</p> AWS中国代理超过十年专业AWS使用经验解决3000+客户的技术问题专业素质强人脉广泛结识AWS原厂技术员和阿里国际总代理
<p class="description">AWS China general agent, more than 10 years of professional AWS experience, Solve the </p>
technical problems of 3000+ customers, strong professional quality and connections. Extensively, get <p class="description">
acquainted with AWS original technicians and Ali international distributors.</p> AWS China general agent, more than 10 years of professional AWS
experience, Solve the technical problems of 3000+ customers, strong
professional quality and connections. Extensively, get acquainted
with AWS original technicians and Ali international distributors.
</p>
</div> </div>
</div> </div>
</div> </div>
<div class="service-table"> <div class="service-table">
<div style="width: 80%;margin: 0 auto;border-top: 8px solid #ff6702;"> <div style="width: 80%; margin: 0 auto; border-top: 8px solid #ff6702">
<div class="service-table-row"> <div class="service-table-row">
<div class="service-table-icon"><img src="../assets/icon/Building.png" alt=""></div> <div class="service-table-icon">
<img src="../assets/icon/Building.webp" alt="" />
</div>
<div class="service-table-row-mini"> <div class="service-table-row-mini">
<div class="service-table-cell title">服务类型</div> <div class="service-table-cell title">服务类型</div>
<div class="row-mini-lie"> <div class="row-mini-lie">
@ -220,21 +303,34 @@
<div>高防服务器</div> <div>高防服务器</div>
</div> </div>
</div> </div>
<div class="service-table-cell"><a :href="contactLinks.CustomerService" target="_blank">更多咨询客服 <div class="service-table-cell">
<svg t="1740226957523" class="icon" viewBox="0 0 1024 1024" version="1.1" <a :href="contactLinks.CustomerService" target="_blank"
xmlns="http://www.w3.org/2000/svg" >更多咨询客服
p-id="4090" width="200" height="200"> <svg
<path t="1740226957523"
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z" class="icon"
fill="#7e7d7d" p-id="4091"></path> viewBox="0 0 1024 1024"
</svg> version="1.1"
</a></div> xmlns="http://www.w3.org/2000/svg"
p-id="4090"
width="200"
height="200"
>
<path
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z"
fill="#7e7d7d"
p-id="4091"
></path>
</svg>
</a>
</div>
</div> </div>
</div> </div>
<div class="service-table-row"> <div class="service-table-row">
<div class="service-table-icon"><img src="../assets/icon/Location.png" alt=""></div> <div class="service-table-icon">
<img src="../assets/icon/Location.webp" alt="" />
</div>
<div class="service-table-row-mini"> <div class="service-table-row-mini">
<div class="service-table-cell title">地址范围</div> <div class="service-table-cell title">地址范围</div>
<div class="row-mini-lie"> <div class="row-mini-lie">
@ -247,21 +343,34 @@
<div>日本</div> <div>日本</div>
</div> </div>
</div> </div>
<div class="service-table-cell"><a :href="contactLinks.CustomerService" target="_blank">更多咨询客服 <div class="service-table-cell">
<svg t="1740226957523" class="icon" viewBox="0 0 1024 1024" version="1.1" <a :href="contactLinks.CustomerService" target="_blank"
xmlns="http://www.w3.org/2000/svg" >更多咨询客服
p-id="4090" width="200" height="200"> <svg
<path t="1740226957523"
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z" class="icon"
fill="#7e7d7d" p-id="4091"></path> viewBox="0 0 1024 1024"
</svg> version="1.1"
</a></div> xmlns="http://www.w3.org/2000/svg"
p-id="4090"
width="200"
height="200"
>
<path
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z"
fill="#7e7d7d"
p-id="4091"
></path>
</svg>
</a>
</div>
</div> </div>
</div> </div>
<div class="service-table-row"> <div class="service-table-row">
<div class="service-table-icon"><img src="../assets/icon/Wi-Fi.png" alt=""></div> <div class="service-table-icon">
<img src="../assets/icon/Wi-Fi.webp" alt="" />
</div>
<div class="service-table-row-mini"> <div class="service-table-row-mini">
<div class="service-table-cell title">带宽范围</div> <div class="service-table-cell title">带宽范围</div>
<div class="row-mini-lie"> <div class="row-mini-lie">
@ -274,21 +383,34 @@
<div>1000M</div> <div>1000M</div>
</div> </div>
</div> </div>
<div class="service-table-cell"><a :href="contactLinks.CustomerService" target="_blank">更多咨询客服 <div class="service-table-cell">
<svg t="1740226957523" class="icon" viewBox="0 0 1024 1024" version="1.1" <a :href="contactLinks.CustomerService" target="_blank"
xmlns="http://www.w3.org/2000/svg" >更多咨询客服
p-id="4090" width="200" height="200"> <svg
<path t="1740226957523"
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z" class="icon"
fill="#7e7d7d" p-id="4091"></path> viewBox="0 0 1024 1024"
</svg> version="1.1"
</a></div> xmlns="http://www.w3.org/2000/svg"
p-id="4090"
width="200"
height="200"
>
<path
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z"
fill="#7e7d7d"
p-id="4091"
></path>
</svg>
</a>
</div>
</div> </div>
</div> </div>
<div class="service-table-row"> <div class="service-table-row">
<div class="service-table-icon"><img src="../assets/icon/Grid.png" alt=""></div> <div class="service-table-icon">
<img src="../assets/icon/Grid.webp" alt="" />
</div>
<div class="service-table-row-mini"> <div class="service-table-row-mini">
<div class="service-table-cell title">配置大小</div> <div class="service-table-cell title">配置大小</div>
<div class="row-mini-lie"> <div class="row-mini-lie">
@ -301,18 +423,28 @@
<div>2核4G</div> <div>2核4G</div>
</div> </div>
</div> </div>
<div class="service-table-cell"><a :href="contactLinks.CustomerService" target="_blank">更多咨询客服 <div class="service-table-cell">
<svg t="1740226957523" class="icon" viewBox="0 0 1024 1024" version="1.1" <a :href="contactLinks.CustomerService" target="_blank"
xmlns="http://www.w3.org/2000/svg" >更多咨询客服
p-id="4090" width="200" height="200"> <svg
<path t="1740226957523"
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z" class="icon"
fill="#7e7d7d" p-id="4091"></path> viewBox="0 0 1024 1024"
</svg> version="1.1"
</a></div> xmlns="http://www.w3.org/2000/svg"
p-id="4090"
width="200"
height="200"
>
<path
d="M744.848 536L472.96 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.416 0l302.128-301.376a42.56 42.56 0 0 0 0-60.288L533.36 204.48a42.8 42.8 0 0 0-60.416 0 42.56 42.56 0 0 0 0 60.272L744.848 536z m-300.416 0L172.512 807.248a42.56 42.56 0 0 0 0 60.272 42.8 42.8 0 0 0 60.432 0L535.04 566.144a42.56 42.56 0 0 0 0-60.288L232.96 204.48a42.8 42.8 0 0 0-60.432 0 42.56 42.56 0 0 0 0 60.272L444.432 536z"
fill="#7e7d7d"
p-id="4091"
></path>
</svg>
</a>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -324,14 +456,25 @@
import NavMenu from "../components/NavMenu.vue"; import NavMenu from "../components/NavMenu.vue";
import contactUs from "./contactUs.vue"; import contactUs from "./contactUs.vue";
import FooterMenu from "../components/FooterMenu.vue"; import FooterMenu from "../components/FooterMenu.vue";
import '../assets/CSS/styles.css'; import "../assets/CSS/styles.css";
import { contactLinks } from '../static/js/contact_link.js'; import { contactLinks } from "../static/js/contact_link.js";
import {updateTDK} from "../assets/js/dynamic-tdk.js";
export default { export default {
components: {NavMenu, contactUs, FooterMenu}, components: { NavMenu, contactUs, FooterMenu },
mounted() {
fetch("/TDK/tdk.json")
.then((res) => res.json())
.then((tdkData) => {
const pageName = this.$route.name || "index";
const tdk = tdkData[pageName] || tdkData["index"];
updateTDK(tdk);
})
.catch((err) => console.error("Error loading TDK:", err));
},
setup() { setup() {
return {contactLinks} return { contactLinks };
} },
} };
</script> </script>
<style scoped> <style scoped>
@ -360,8 +503,6 @@ export default {
height: auto; height: auto;
} }
.textContainer { .textContainer {
text-align: center; text-align: center;
color: white; color: white;
@ -384,7 +525,6 @@ export default {
.font-size-paragraph2 { .font-size-paragraph2 {
margin: 5px 0; margin: 5px 0;
font-size: var(--font-size-subtitle3); font-size: var(--font-size-subtitle3);
} }
.right_to { .right_to {
@ -401,7 +541,7 @@ export default {
.homeView_rightBox { .homeView_rightBox {
width: 50%; width: 50%;
height: 100%; height: 100%;
background: url("../assets/back/jianzhu.jpg") no-repeat center center; background: url("../assets/back/jianzhu.webp") no-repeat center center;
background-size: cover; background-size: cover;
} }
@ -568,7 +708,6 @@ export default {
padding: 20px; padding: 20px;
width: 15%; width: 15%;
text-align: center; text-align: center;
} }
.service-process-icons-box3 { .service-process-icons-box3 {
@ -780,7 +919,6 @@ export default {
font-weight: bold; font-weight: bold;
color: #ff6702; color: #ff6702;
font-size: clamp(0.2rem, 1.5vw, 3rem); font-size: clamp(0.2rem, 1.5vw, 3rem);
} }
.service-table-cell a { .service-table-cell a {
@ -864,7 +1002,7 @@ export default {
.bottom-content { .bottom-content {
position: static; position: static;
} }
.bottom-content p{ .bottom-content p {
position: static; position: static;
font-size: 1rem !important; font-size: 1rem !important;
} }
@ -1002,7 +1140,6 @@ export default {
align-items: center; align-items: center;
border-radius: 10px; border-radius: 10px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.service-card-icon-container img { .service-card-icon-container img {
@ -1103,13 +1240,13 @@ export default {
width: 100px; width: 100px;
height: 100px; height: 100px;
} }
.service-table-row-mini{ .service-table-row-mini {
width: 100%; width: 100%;
display: flex; display: flex;
align-items:stretch; align-items: stretch;
flex-direction: column; flex-direction: column;
} }
.service-table-cell.title{ .service-table-cell.title {
font-size: max(1.2rem, min(1.5vw, 3rem)); font-size: max(1.2rem, min(1.5vw, 3rem));
width: 100%; width: 100%;
text-align: center; text-align: center;
@ -1124,15 +1261,13 @@ export default {
} }
.row-mini-lie { .row-mini-lie {
width: 100%; width: 100%;
display: flex display: flex;
;
align-items: center; align-items: center;
} }
.service-table-cell a{ .service-table-cell a {
color: #7e7d7d; color: #7e7d7d;
text-decoration: none; text-decoration: none;
display: flex display: flex;
;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
font-size: max(0.9rem, min(1vw, 1.2rem)); font-size: max(0.9rem, min(1vw, 1.2rem));
@ -1143,7 +1278,7 @@ export default {
height: 20px; height: 20px;
margin-bottom: 1px; margin-bottom: 1px;
} }
.service-table-cell div{ .service-table-cell div {
margin: 0; margin: 0;
} }
} }

View File

@ -23,6 +23,19 @@ export default {
return { article: null }; return { article: null };
} }
}, },
head() {
return {
title: this.article?.title || "默认标题",
meta: [
{ hid: "description", name: "description", content: this.article?.description || "默认描述" },
{ hid: "keywords", name: "keywords", content: this.article?.keywords || "默认关键词" },
{ hid: "og:title", property: "og:title", content: this.article?.title || "默认标题" },
{ hid: "og:description", property: "og:description", content: this.article?.description || "默认描述" },
{ hid: "og:image", property: "og:image", content: this.article?.image || "/default-image.png" },
{ hid: "og:url", property: "og:url", content: `https://yourwebsite.com/articles/${this.$route.params.slug}` }
]
};
}
}; };
</script> </script>

View File

@ -21,8 +21,20 @@
<script> <script>
import NavMenu from "../../components/NavMenu.vue"; import NavMenu from "../../components/NavMenu.vue";
import FooterMenu from "../../components/FooterMenu.vue"; import FooterMenu from "../../components/FooterMenu.vue";
import {updateTDK} from "../../assets/js/dynamic-tdk.js";
export default { export default {
components: { NavMenu, FooterMenu }, components: { NavMenu, FooterMenu },
mounted() {
fetch("/TDK/tdk.json")
.then((res) => res.json())
.then((tdkData) => {
const pageName = this.$route.name || "news";
const tdk = tdkData[pageName] || tdkData["index"];
updateTDK(tdk);
})
.catch((err) => console.error("Error loading TDK:", err));
},
async asyncData({ $content }) { async asyncData({ $content }) {
try { try {
// `static/news/*.md` // `static/news/*.md`

27
static/TDK/tdk.json Normal file
View File

@ -0,0 +1,27 @@
{
"index": {
"title": "首页",
"description": "首页描述内容",
"keywords": "首页, 关键字1, 关键字2"
},
"aboutUs": {
"title": "关于我们",
"description": "这是关于我们的页面,介绍公司信息。",
"keywords": "公司, 关于我们, 介绍"
},
"contactUs": {
"title": "联系我们",
"description": "这是联系我们的页面,介绍公司联系方式。",
"keywords": "公司, 联系我们, 联系方式"
},
"calculatePrice": {
"title": "计算价格",
"description": "这是计算价格的页面,介绍公司价格计算方式。",
"keywords": "公司, 计算价格, 价格"
},
"news":{
"title": "新闻",
"description": "这是新闻的页面,介绍公司新闻。",
"keywords": "公司, 新闻, 新闻列表"
}
}

View File

@ -1,5 +1,7 @@
--- ---
title: 微软Azure的最新战略从云计算到智能边缘 title: 微软Azure的最新战略从云计算到智能边缘
description: "这篇文章探讨了云计算行业的发展方向,包括智能化、边缘计算等。"
keywords: "云计算, AI, 边缘计算"
category: Feb 10. 2025 category: Feb 10. 2025
order: 1 order: 1
--- ---

9
static/robots.txt Normal file
View File

@ -0,0 +1,9 @@
# 该文件可以通过`你的网站域名/Robots.txt`直接访问
# User-agent作用描述搜索引擎的名字对于该文件来说至少药有一条user-agent记录则该项的值设为*
User-agent: *
# Disallow: 描述不希望被访问到的一个url
Disallow: /bin/
Sitemap: buddyscloud.com/sitemap.xml
Sitemap: www.buddyscloud.com/sitemap.xml

30
static/sitemap.xml Normal file
View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<!-- Created By http://www.zhetao.com/sitemapcreator, URLs: 5 Generated at: 2025-03-27 14:32:17 -->
<url>
<loc>https://buddyscloud.com/</loc>
<priority>1.00</priority>
</url>
<url>
<loc>https://buddyscloud.com/calculatePrice</loc>
<priority>1.00</priority>
</url>
<url>
<loc>https://buddyscloud.com/aboutUs</loc>
<priority>1.00</priority>
</url>
<url>
<loc>https://buddyscloud.com/news</loc>
<priority>1.00</priority>
</url>
<url>
<loc>https://buddyscloud.com/contactUs</loc>
<priority>1.00</priority>
</url>
</urlset>

10043
yarn.lock Normal file

File diff suppressed because it is too large Load Diff