Skip to content

Commit 887810c

Browse files
committed
feat: seo 优化
1 parent 5687061 commit 887810c

File tree

6 files changed

+153
-65
lines changed

6 files changed

+153
-65
lines changed

public/feed.xml

Lines changed: 105 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44
<description><![CDATA[我是幸运的蜗牛,一名充满热情的前端开发工程师。我热衷于探索和体验最新技术,特别是人工智能(AI),并在日常工作中去使用它们,来提升我的工作效率。我的目标是积极参与开源社区,为开源项目贡献自己的力量。正如我的名字,我相信越努力,越幸运]]></description>
55
<link>https://luckysnail.cn</link>
66
<generator>RSS for Node</generator>
7-
<lastBuildDate>Sat, 31 Aug 2024 11:22:45 GMT</lastBuildDate>
7+
<lastBuildDate>Thu, 07 Nov 2024 17:15:36 GMT</lastBuildDate>
88
<atom:link href="https://luckysnail.cn/feed.xml" rel="self" type="application/rss+xml"/>
9+
<item>
10+
<title><![CDATA[Next.js 项目太坑了,一个简单的样式库,就把项目玩坏了]]></title>
11+
<link>https://luckysnail.cn/posts/post-10</link>
12+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-10</guid>
13+
</item>
914
<item>
1015
<title><![CDATA[如何把这个 blog 项目,部署在自己的服务器上]]></title>
1116
<link>https://luckysnail.cn/posts/post-11</link>
@@ -16,140 +21,180 @@
1621
<link>https://luckysnail.cn/posts/post-13</link>
1722
<guid isPermaLink="true">https://luckysnail.cn/posts/post-13</guid>
1823
</item>
19-
<item>
20-
<title><![CDATA[Next.js 项目太坑了,一个简单的样式库,就把项目玩坏了]]></title>
21-
<link>https://luckysnail.cn/posts/post-10</link>
22-
<guid isPermaLink="true">https://luckysnail.cn/posts/post-10</guid>
23-
</item>
24-
<item>
25-
<title><![CDATA[使用 View Transitions API 实现全页面主题切换动画]]></title>
26-
<link>https://luckysnail.cn/posts/post-15</link>
27-
<guid isPermaLink="true">https://luckysnail.cn/posts/post-15</guid>
28-
</item>
2924
<item>
3025
<title><![CDATA[那些优秀的程序员和他们的个人 blog]]></title>
3126
<link>https://luckysnail.cn/posts/post-14</link>
3227
<guid isPermaLink="true">https://luckysnail.cn/posts/post-14</guid>
3328
</item>
3429
<item>
35-
<title><![CDATA[记录我写的烂代码]]></title>
36-
<link>https://luckysnail.cn/posts/post-5</link>
37-
<guid isPermaLink="true">https://luckysnail.cn/posts/post-5</guid>
30+
<title><![CDATA[Next.js 14 项目踩坑日志(企业级项目)]]></title>
31+
<link>https://luckysnail.cn/posts/post-16</link>
32+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-16</guid>
3833
</item>
3934
<item>
40-
<title><![CDATA[对萝卜快跑的一些观点]]></title>
41-
<link>https://luckysnail.cn/posts/post-6</link>
42-
<guid isPermaLink="true">https://luckysnail.cn/posts/post-6</guid>
35+
<title><![CDATA[css 样式污染几种解决方案]]></title>
36+
<link>https://luckysnail.cn/posts/post-17</link>
37+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-17</guid>
4338
</item>
4439
<item>
45-
<title><![CDATA[什么是 Unix 哲学 ?]]></title>
46-
<link>https://luckysnail.cn/posts/post-9</link>
47-
<guid isPermaLink="true">https://luckysnail.cn/posts/post-9</guid>
40+
<title><![CDATA[Taro3 + react 项目如何使用 towxml 在微信小程序渲染和优化 markdown]]></title>
41+
<link>https://luckysnail.cn/posts/post-19</link>
42+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-19</guid>
4843
</item>
4944
<item>
50-
<title><![CDATA[阿里云 centos 服务器,使用宝塔 + webHook 自动同步代码,构建部署]]></title>
51-
<link>https://luckysnail.cn/posts/post-12</link>
52-
<guid isPermaLink="true">https://luckysnail.cn/posts/post-12</guid>
45+
<title><![CDATA[DOM元素导出图片与PDF:多种方案对比与实现]]></title>
46+
<link>https://luckysnail.cn/posts/post-20</link>
47+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-20</guid>
5348
</item>
5449
<item>
55-
<title><![CDATA[当我开始编程时我希望知道的 65 件事]]></title>
56-
<link>https://luckysnail.cn/posts/65-things-need-konw</link>
57-
<guid isPermaLink="true">https://luckysnail.cn/posts/65-things-need-konw</guid>
50+
<title><![CDATA[开发经验贴(持久更新)]]></title>
51+
<link>https://luckysnail.cn/posts/post-18</link>
52+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-18</guid>
5853
</item>
5954
<item>
60-
<title><![CDATA[multi-repo 和 mono-repo 代码管理方式了解(附实践源码)]]></title>
61-
<link>https://luckysnail.cn/posts/code-manager</link>
62-
<guid isPermaLink="true">https://luckysnail.cn/posts/code-manager</guid>
55+
<title><![CDATA[路由的 hash 模式 和 history 模式的区别是什么?]]></title>
56+
<link>https://luckysnail.cn/posts/post-24</link>
57+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-24</guid>
6358
</item>
6459
<item>
65-
<title><![CDATA[如何使用Next.js和GitHub Issues构建个人博客:从零到上线的完整指南]]></title>
66-
<link>https://luckysnail.cn/posts/post-7</link>
67-
<guid isPermaLink="true">https://luckysnail.cn/posts/post-7</guid>
60+
<title><![CDATA[webStorm 快速入门上手开发]]></title>
61+
<link>https://luckysnail.cn/posts/post-22</link>
62+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-22</guid>
6863
</item>
6964
<item>
70-
<title><![CDATA[一名普通前端开发的絮絮叨 - 2023]]></title>
71-
<link>https://luckysnail.cn/posts/end-2023</link>
72-
<guid isPermaLink="true">https://luckysnail.cn/posts/end-2023</guid>
65+
<title><![CDATA[阿里云 centos 服务器,使用宝塔 + webHook 自动同步代码,构建部署]]></title>
66+
<link>https://luckysnail.cn/posts/post-12</link>
67+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-12</guid>
7368
</item>
7469
<item>
7570
<title><![CDATA[git commit 提交规范中文解释]]></title>
7671
<link>https://luckysnail.cn/posts/post-4</link>
7772
<guid isPermaLink="true">https://luckysnail.cn/posts/post-4</guid>
7873
</item>
7974
<item>
80-
<title><![CDATA[前端程序员学习 Docker 的笔记 (二)]]></title>
81-
<link>https://luckysnail.cn/posts/docker-learn-2</link>
82-
<guid isPermaLink="true">https://luckysnail.cn/posts/docker-learn-2</guid>
75+
<title><![CDATA[对萝卜快跑的一些观点]]></title>
76+
<link>https://luckysnail.cn/posts/post-6</link>
77+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-6</guid>
78+
</item>
79+
<item>
80+
<title><![CDATA[记录我写的烂代码]]></title>
81+
<link>https://luckysnail.cn/posts/post-5</link>
82+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-5</guid>
83+
</item>
84+
<item>
85+
<title><![CDATA[LLM RAG (大语言模型检索增强生成技术)的前世今生]]></title>
86+
<link>https://luckysnail.cn/posts/post-21</link>
87+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-21</guid>
88+
</item>
89+
<item>
90+
<title><![CDATA[什么是 Unix 哲学 ?]]></title>
91+
<link>https://luckysnail.cn/posts/post-9</link>
92+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-9</guid>
8393
</item>
8494
<item>
8595
<title><![CDATA[关于 幸运的蜗牛]]></title>
8696
<link>https://luckysnail.cn/posts/about</link>
8797
<guid isPermaLink="true">https://luckysnail.cn/posts/about</guid>
8898
</item>
99+
<item>
100+
<title><![CDATA[JS 中的事件循环 - 懂前端的都知道这里的门道有多深!]]></title>
101+
<link>https://luckysnail.cn/posts/post-23</link>
102+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-23</guid>
103+
</item>
104+
<item>
105+
<title><![CDATA[multi-repo 和 mono-repo 代码管理方式了解(附实践源码)]]></title>
106+
<link>https://luckysnail.cn/posts/code-manager</link>
107+
<guid isPermaLink="true">https://luckysnail.cn/posts/code-manager</guid>
108+
</item>
109+
<item>
110+
<title><![CDATA[一名普通前端开发的絮絮叨 - 2023]]></title>
111+
<link>https://luckysnail.cn/posts/end-2023</link>
112+
<guid isPermaLink="true">https://luckysnail.cn/posts/end-2023</guid>
113+
</item>
89114
<item>
90115
<title><![CDATA[《繁花》中让人惊艳的台词]]></title>
91116
<link>https://luckysnail.cn/posts/fan-hua</link>
92117
<guid isPermaLink="true">https://luckysnail.cn/posts/fan-hua</guid>
93118
</item>
94119
<item>
95-
<title><![CDATA[前端程序员学习 Docker 的笔记 (-)]]></title>
96-
<link>https://luckysnail.cn/posts/docker-learn-1</link>
97-
<guid isPermaLink="true">https://luckysnail.cn/posts/docker-learn-1</guid>
120+
<title><![CDATA[一篇文章讲清楚 React Element、React Component、JSX、Fiber 以及Diff算法的概念及其相互关系]]></title>
121+
<link>https://luckysnail.cn/posts/fiber-learn</link>
122+
<guid isPermaLink="true">https://luckysnail.cn/posts/fiber-learn</guid>
98123
</item>
99124
<item>
100125
<title><![CDATA[记录第一次当项目负责人感受]]></title>
101126
<link>https://luckysnail.cn/posts/first-project-manager-record</link>
102127
<guid isPermaLink="true">https://luckysnail.cn/posts/first-project-manager-record</guid>
103128
</item>
104129
<item>
105-
<title><![CDATA[GitHub copilot chat 体验]]></title>
106-
<link>https://luckysnail.cn/posts/github-copilot-chat-use</link>
107-
<guid isPermaLink="true">https://luckysnail.cn/posts/github-copilot-chat-use</guid>
130+
<title><![CDATA[一个普通三本如何自学成为前端开发者]]></title>
131+
<link>https://luckysnail.cn/posts/frontend-learn-line-1</link>
132+
<guid isPermaLink="true">https://luckysnail.cn/posts/frontend-learn-line-1</guid>
133+
</item>
134+
<item>
135+
<title><![CDATA[前端学习路线(自学版)]]></title>
136+
<link>https://luckysnail.cn/posts/frontend-learn-line-2</link>
137+
<guid isPermaLink="true">https://luckysnail.cn/posts/frontend-learn-line-2</guid>
108138
</item>
109139
<item>
110140
<title><![CDATA[2024 年中总结]]></title>
111141
<link>https://luckysnail.cn/posts/mid-year-2024</link>
112142
<guid isPermaLink="true">https://luckysnail.cn/posts/mid-year-2024</guid>
113143
</item>
114144
<item>
115-
<title><![CDATA[一篇文章讲清楚 React Element、React Component、JSX、Fiber 以及Diff算法的概念及其相互关系]]></title>
116-
<link>https://luckysnail.cn/posts/fiber-learn</link>
117-
<guid isPermaLink="true">https://luckysnail.cn/posts/fiber-learn</guid>
145+
<title><![CDATA[GitHub copilot chat 体验]]></title>
146+
<link>https://luckysnail.cn/posts/github-copilot-chat-use</link>
147+
<guid isPermaLink="true">https://luckysnail.cn/posts/github-copilot-chat-use</guid>
118148
</item>
119149
<item>
120150
<title><![CDATA[2023 年中终结]]></title>
121151
<link>https://luckysnail.cn/posts/mid-year-summary-2023</link>
122152
<guid isPermaLink="true">https://luckysnail.cn/posts/mid-year-summary-2023</guid>
123153
</item>
124-
<item>
125-
<title><![CDATA[前端学习路线(自学版)]]></title>
126-
<link>https://luckysnail.cn/posts/frontend-learn-line-2</link>
127-
<guid isPermaLink="true">https://luckysnail.cn/posts/frontend-learn-line-2</guid>
128-
</item>
129154
<item>
130155
<title><![CDATA[React 新手常犯的十个错误]]></title>
131156
<link>https://luckysnail.cn/posts/react-error</link>
132157
<guid isPermaLink="true">https://luckysnail.cn/posts/react-error</guid>
133158
</item>
134-
<item>
135-
<title><![CDATA[微信小程序如何引入图标]]></title>
136-
<link>https://luckysnail.cn/posts/use-iconfont-in-wechat-miniprogram</link>
137-
<guid isPermaLink="true">https://luckysnail.cn/posts/use-iconfont-in-wechat-miniprogram</guid>
138-
</item>
139159
<item>
140160
<title><![CDATA[前端程序员学习 Redis]]></title>
141161
<link>https://luckysnail.cn/posts/redis-learn</link>
142162
<guid isPermaLink="true">https://luckysnail.cn/posts/redis-learn</guid>
143163
</item>
164+
<item>
165+
<title><![CDATA[前端程序员学习 Docker 的笔记 (-)]]></title>
166+
<link>https://luckysnail.cn/posts/docker-learn-1</link>
167+
<guid isPermaLink="true">https://luckysnail.cn/posts/docker-learn-1</guid>
168+
</item>
169+
<item>
170+
<title><![CDATA[微信小程序如何引入图标]]></title>
171+
<link>https://luckysnail.cn/posts/use-iconfont-in-wechat-miniprogram</link>
172+
<guid isPermaLink="true">https://luckysnail.cn/posts/use-iconfont-in-wechat-miniprogram</guid>
173+
</item>
144174
<item>
145175
<title><![CDATA[React最简版本低代码实现]]></title>
146176
<link>https://luckysnail.cn/posts/react-drag-drop-demo</link>
147177
<guid isPermaLink="true">https://luckysnail.cn/posts/react-drag-drop-demo</guid>
148178
</item>
149179
<item>
150-
<title><![CDATA[一个普通三本如何自学成为前端开发者]]></title>
151-
<link>https://luckysnail.cn/posts/frontend-learn-line-1</link>
152-
<guid isPermaLink="true">https://luckysnail.cn/posts/frontend-learn-line-1</guid>
180+
<title><![CDATA[使用 View Transitions API 实现全页面主题切换动画]]></title>
181+
<link>https://luckysnail.cn/posts/post-15</link>
182+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-15</guid>
183+
</item>
184+
<item>
185+
<title><![CDATA[前端程序员学习 Docker 的笔记 (二)]]></title>
186+
<link>https://luckysnail.cn/posts/docker-learn-2</link>
187+
<guid isPermaLink="true">https://luckysnail.cn/posts/docker-learn-2</guid>
188+
</item>
189+
<item>
190+
<title><![CDATA[当我开始编程时我希望知道的 65 件事]]></title>
191+
<link>https://luckysnail.cn/posts/65-things-need-konw</link>
192+
<guid isPermaLink="true">https://luckysnail.cn/posts/65-things-need-konw</guid>
193+
</item>
194+
<item>
195+
<title><![CDATA[如何使用Next.js和GitHub Issues构建个人博客:从零到上线的完整指南]]></title>
196+
<link>https://luckysnail.cn/posts/post-7</link>
197+
<guid isPermaLink="true">https://luckysnail.cn/posts/post-7</guid>
153198
</item>
154199
</channel>
155200
</rss>

src/app/(app)/about/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,21 @@ import { notFound } from 'next/navigation';
66
export const generateMetadata = () => {
77
const post = allPosts.find((post) => post.slug === 'about');
88
if (!post) throw new Error(`Post not found for `);
9-
return { title: post.title, description: post.description };
9+
const title = post.title;
10+
const description = post.description;
11+
return {
12+
title,
13+
description,
14+
openGraph: {
15+
title,
16+
description
17+
},
18+
twitter: {
19+
title,
20+
description,
21+
card: 'summary_large_image'
22+
}
23+
};
1024
};
1125

1226
const AboutPage = () => {

src/app/(app)/posts/[id]/page.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Container } from '@/components/Container';
33
import MDXComponents from '@/components/MDXComponents';
44
import { AspectRatio } from '@/components/ui/aspect-ratio';
55
import { Separator } from '@/components/ui/separator';
6+
import siteMetadata from '@/config/site';
67
import { cn } from '@/lib/utils';
78
import { allPosts, type Post } from 'contentlayer/generated';
89
import dayjs from 'dayjs';
@@ -31,9 +32,20 @@ export async function generateStaticParams() {
3132
export const generateMetadata = ({ params }: { params: TypeParams }) => {
3233
const post = allPosts.find((post) => post.slug === params.id);
3334
if (!post) throw new Error(`Post not found for id: ${params.id}`);
35+
const title = post.title;
36+
const description =
37+
post.description ?? post.title + ' - ' + siteMetadata.authors;
3438
return {
35-
title: post.title,
36-
description: post.description,
39+
title,
40+
description,
41+
openGraph: {
42+
title,
43+
description
44+
},
45+
titter: {
46+
title,
47+
description
48+
},
3749
keywords: post.tags?.join(',')
3850
};
3951
};

src/app/(app)/posts/page.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Container } from '@/components/Container';
22
import { AspectRatio } from '@/components/ui/aspect-ratio';
33
import { Separator } from '@/components/ui/separator';
4+
import { baseSiteConfig } from '@/config/site';
45
import { cn } from '@/lib/utils';
56
import { allPosts, type Post } from 'contentlayer/generated';
67
import dayjs from 'dayjs';
@@ -60,6 +61,22 @@ function PostCard({ post, showCover }: { post: Post; showCover?: boolean }) {
6061
</Link>
6162
);
6263
}
64+
const title = '我的博客列表 | ' + baseSiteConfig.authors;
65+
const description =
66+
'记录在编程学习、工作中遇到的问题。我精心整理为技术博客文章合集,涵盖前端开发、React、Next.js等热门话题。发现实用的开发技巧、最佳实践和行业动态,提升您的开发技能。立即浏览最新文章!';
67+
export const metadata = {
68+
title,
69+
description,
70+
openGraph: {
71+
title,
72+
description
73+
},
74+
twitter: {
75+
title,
76+
description,
77+
card: 'summary_large_image'
78+
}
79+
};
6380

6481
export default function Posts() {
6582
// {

src/app/(app)/projects/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const title = '我的项目';
1919
const description =
2020
'我在工作和自己学习过程中开发的一些项目,主要是前端领域,包括的技术有:' +
2121
technologyList.join(',') +
22-
'等等。';
22+
'等现代技术栈实践。这里汇集了企业级应用、响应式网站和创新性Web解决方案。了解我的技术实力与项目经验。';
2323
export const metadata = {
2424
title,
2525
description,

src/config/site.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const url = new URL(
55
? 'https://luckysnail.cn/'
66
: 'http://localhost:3000'
77
);
8-
const baseSiteConfig: SiteConfig = {
8+
export const baseSiteConfig: SiteConfig = {
99
name: 'blog | 前端 | 开发者',
1010
description:
1111
'我是幸运的蜗牛,一名充满热情的前端开发工程师。我热衷于探索和体验最新技术,特别是人工智能(AI),并在日常工作中去使用它们,来提升我的工作效率。我的目标是积极参与开源社区,为开源项目贡献自己的力量。正如我的名字,我相信越努力,越幸运',

0 commit comments

Comments
 (0)