前端如何做 SEO 优化?
SEO 核心原则
- 可爬取:搜索引擎能访问页面内容
- 可索引:页面能被搜索引擎收录
- 内容相关:页面内容与搜索关键词匹配
- 性能好:加载速度影响排名
技术优化
1. 语义化 HTML
<!-- ✅ 语义化标签 -->
<header>
<nav>导航</nav>
</header>
<main>
<article>
<h1>标题</h1>
<p>内容</p>
</article>
<aside>侧边栏</aside>
</main>
<footer>页脚</footer>
<!-- ❌ 全 div -->
<div class="header">
<div class="nav">导航</div>
</div>2. Meta 标签
<head>
<title>页面标题 - 品牌(60字符以内)</title>
<meta name="description" content="页面描述(160字符以内)">
<meta name="keywords" content="关键词1, 关键词2">
<link rel="canonical" href="https://example.com/page">
<!-- Open Graph(社交媒体分享)-->
<meta property="og:title" content="标题">
<meta property="og:description" content="描述">
<meta property="og:image" content="https://example.com/image.jpg">
<meta property="og:url" content="https://example.com/page">
</head>3. SSR/SSG(关键!)
// CSR(客户端渲染)→ SEO 差
// 搜索引擎可能不执行 JS,看到空页面
// SSR(服务端渲染)→ SEO 好
// 服务器返回完整 HTML
// SSG(静态生成)→ SEO 好
// 构建时生成 HTML
// Next.js / Nuxt.js 提供 SSR/SSG4. 结构化数据(Schema.org)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "文章标题",
"author": { "@type": "Person", "name": "作者" },
"datePublished": "2024-01-01",
"image": "https://example.com/image.jpg"
}
</script>5. sitemap.xml 和 robots.txt
<!-- sitemap.xml -->
<urlset>
<url>
<loc>https://example.com/page1</loc>
<lastmod>2024-01-01</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset># robots.txt
User-agent: *
Allow: /
Disallow: /admin/
Sitemap: https://example.com/sitemap.xml6. 性能优化
- Core Web Vitals 达标(LCP < 2.5s, FID < 100ms, CLS < 0.1)
- 图片懒加载 + WebP
- 预渲染关键路径
内容优化
<!-- 标题层级 -->
<h1>主标题(每页一个)</h1>
<h2>次标题</h2>
<h3>三级标题</h3>
<!-- 图片 alt -->
<img src="cat.jpg" alt="一只橘猫在晒太阳">
<!-- 链接描述 -->
<a href="/about">关于我们</a> <!-- ✅ -->
<a href="/about">点击这里</a> <!-- ❌ -->
<!-- 面包屑导航 -->
<nav>
<a href="/">首页</a> > <a href="/blog">博客</a> > <span>文章标题</span>
</nav>SPA SEO 挑战
// SPA(CSR)的问题:
// 1. 初始 HTML 为空(只有一个 <div id="app"></div>)
// 2. 路由切换不改变 URL(需要 History API)
// 3. 搜索引擎可能不执行 JS
// 解决方案:
// 1. 使用 SSR(Next.js / Nuxt.js)
// 2. 预渲染(prerender-spa-plugin)
// 3. 动态渲染(检测爬虫 UA 返回 SSR 内容)SEO 检查清单
- 使用 SSR/SSG
- 每页有唯一的 title 和 description
- 语义化 HTML
- 图片有 alt 属性
- 有 sitemap.xml
- 有 robots.txt
- 使用 HTTPS
- 移动端适配
- Core Web Vitals 达标
- 结构化数据标记
- 内部链接合理
- 规范化 URL(canonical)