feat(layout): 重构布局组件体系与数据层

- 重构 Header 导航、Footer 页脚、MobileMenu 移动端菜单
- 新增 MobileTabBar 移动端底部导航栏
- 更新 MegaDropdown 大型下拉导航
- 重构 SEO 结构化数据组件
- 更新数据层常量 (products, services, solutions, navigation 等)
- 新增 useCountUp 数字递增 Hook
- 修复 .gitignore 中 src/lib 被错误忽略的问题
This commit is contained in:
张翔
2026-07-07 06:53:13 +08:00
parent e78df62cd1
commit 767931202d
28 changed files with 898 additions and 468 deletions
+126 -21
View File
@@ -10,6 +10,15 @@ export function OrganizationSchema() {
"logo": "https://www.novalon.cn/logo.svg",
"description": "专注于企业数字化转型服务,提供软件开发、云计算、数据分析、信息安全等一站式解决方案",
"foundingDate": "2026",
"foundingLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressCountry": "CN",
"addressLocality": "成都",
"addressRegion": "四川省",
}
},
"address": {
"@type": "PostalAddress",
"addressCountry": "CN",
@@ -17,9 +26,25 @@ export function OrganizationSchema() {
"addressRegion": "四川省",
"streetAddress": "成都市高新区"
},
"contactPoint": {
"@type": "ContactPoint",
"email": COMPANY_INFO.email,
"contactType": "customer service",
"availableLanguage": ["Chinese", "English"],
"areaServed": "CN",
},
"sameAs": [
"https://www.novalon.cn"
]
],
"knowsAbout": [
"数字化转型",
"企业软件",
"ERP系统",
"云计算",
"数据分析",
"信息安全",
"金融科技",
],
};
return (
@@ -36,6 +61,11 @@ export function WebsiteSchema() {
"@type": "WebSite",
"name": COMPANY_INFO.name,
"url": "https://www.novalon.cn",
"inLanguage": "zh-CN",
"publisher": {
"@type": "Organization",
"name": COMPANY_INFO.name,
},
"potentialAction": {
"@type": "SearchAction",
"target": "https://www.novalon.cn/search?q={search_term_string}",
@@ -51,20 +81,106 @@ export function WebsiteSchema() {
);
}
export function ServiceSchema() {
interface ServiceSchemaProps {
name?: string;
description?: string;
areaServed?: string;
}
export function ServiceSchema({ name, description, areaServed }: ServiceSchemaProps = {}) {
const schema = {
"@context": "https://schema.org",
"@type": "Service",
"serviceType": "企业数字化转型服务",
"name": name || "企业数字化转型服务",
"serviceType": name || "企业数字化转型服务",
"provider": {
"@type": "Organization",
"name": COMPANY_INFO.name
"name": COMPANY_INFO.name,
"url": "https://www.novalon.cn",
},
"description": "提供软件开发、云计算、数据分析、信息安全等一站式数字化转型解决方案",
"description": description || "提供软件开发、云计算、数据分析、信息安全等一站式数字化转型解决方案",
"areaServed": {
"@type": "Country",
"name": "China"
}
"name": areaServed || "China"
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "数字化转型服务",
"itemListElement": [
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "技术咨询" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "软件开发服务" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "云计算解决方案" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "数据分析与BI" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "信息安全咨询" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "企业IT架构设计" } },
]
},
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}
interface ProductSchemaProps {
name: string;
description: string;
image?: string;
category?: string;
}
export function ProductSchema({ name, description, image, category }: ProductSchemaProps) {
const schema = {
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": name,
"description": description,
"applicationCategory": category || "BusinessApplication",
"operatingSystem": "Web, Windows, macOS, Linux, iOS, Android",
"offers": {
"@type": "Offer",
"priceCurrency": "CNY",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": COMPANY_INFO.name,
}
},
"provider": {
"@type": "Organization",
"name": COMPANY_INFO.name,
},
...(image && { image: `https://www.novalon.cn${image}` }),
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}
interface FAQItem {
question: string;
answer: string;
}
export function FAQSchema({ items }: { items: FAQItem[] }) {
const schema = {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": items.map((item) => ({
"@type": "Question",
"name": item.question,
"acceptedAnswer": {
"@type": "Answer",
"text": item.answer,
}
})),
};
return (
@@ -110,6 +226,9 @@ export function LocalBusinessSchema() {
"url": "https://www.novalon.cn",
"email": COMPANY_INFO.email,
"description": "专注于企业数字化转型服务,提供软件开发、云计算、数据分析、信息安全等一站式解决方案",
"priceRange": "$$",
"currenciesAccepted": "CNY",
"paymentAccepted": "Cash, Credit Card, Bank Transfer",
"address": {
"@type": "PostalAddress",
"streetAddress": "成都市高新区",
@@ -131,25 +250,11 @@ export function LocalBusinessSchema() {
"closes": "18:00"
}
],
"priceRange": "$$",
"currenciesAccepted": "CNY",
"paymentAccepted": "Cash, Credit Card, Bank Transfer",
"areaServed": [
{ "@type": "City", "name": "成都" },
{ "@type": "State", "name": "四川" },
{ "@type": "Country", "name": "中国" }
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "数字化转型服务",
"itemListElement": [
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "软件开发服务" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "云计算解决方案" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "数据分析与BI" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "信息安全咨询" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "企业IT架构设计" } },
]
},
"sameAs": [
"https://www.novalon.cn"
]