跳转到内容
文韬博宇的个人主页
返回

【转载】我是如何开发作品集网站和博客的

· 约 4 分钟· 约 1264 字阅读0编辑页面
本文已超过两年未更新,部分内容可能已过时,请注意甄别。

本文最初发表于我的博客。我把这篇文章放在这里,是为了演示如何使用 AstroPaper 主题写博客文章。

动机

从大学时代起,我就一直想用自己的域名(satnaing.dev)搭建一个个人网站。但直到这个项目,这个愿望从未实现。我做过不少 Web 应用开发的项目和工作,但我从来没有为此付出足够的努力。

你可能会问,“那博客呢?“是啊,博客也一直在我的项目清单上。我一直想用最新的技术做一个博客项目。然而,我一直忙于工作和其他项目,博客项目从未启动。

这些年,我更倾向于追求质量而非数量地开发自己的项目。项目完成后,我通常会在 GitHub 仓库里放一份规范的 README。但 GitHub 仓库的 README 只适合写技术方面的东西(这只是我的想法)。我想记录自己的经历和挑战。于是,我决定做一个自己的博客。加之在此时,我已经积累了足够的经验和信心来完成这个项目。

技术栈

前端方面,我想用 React。但 React 本身对 SEO 不够友好,还需要考虑路由、图片优化等问题。所以我选择了 NextJS 作为主要前端框架。当然,还有 TypeScript 做类型检查。(据说习惯之后你会爱上 TypeScript 😉)

样式方面,我用 TailwindCSS。因为我喜欢 Tailwind 带来的开发体验,与 MUI 或 React Bootstrap 等组件库相比,它有更大的灵活性。

这个项目的所有内容都存放在 GitHub 仓库里。所有博客文章(包括这一篇)都以 Markdown 文件格式编写——我对这种方式非常熟悉。为了更轻松地写 Markdown 和 frontmatter,我使用 Forestry 无头 CMS。这是一个基于 Git 的 CMS,可以提供 Markdown 和其他内容格式的支持。因此,我既可以用 Markdown 写作,也可以用富文本编辑器编辑。而且,用它来写 frontmatter 非常方便。

图片和静态资源上传并存放在 Cloudinary。我通过 Forestry 连接 Cloudinary,直接在仪表盘中管理它们。

总结一下,这个项目的技术栈如下:

功能特性

以下是作品集和博客的几个核心功能。

SEO 友好

整个项目以 SEO 为核心目标开发。我使用了规范的 meta 标签、描述和标题层级。该网站目前已被 Google 索引。

你可以用 “sat naing dev” 等关键词在 Google 上搜索到这个网站。

在 Google 上搜索 satnaing.dev

此外,由于 meta 标签使用得当,这个网站分享到社交媒体时也能展示得很漂亮。

satnaing.dev 分享到 Facebook 时的卡片样式

动态站点地图

站点地图在 SEO 中扮演着重要角色。网站每个页面都应该包含在 sitemap.xml 中。我让网站在新内容、标签或分类创建时自动生成站点地图。

浅色与深色主题

由于近年来深色主题的流行,许多网站现在都自带深色模式。当然,我的网站也支持浅色和深色主题切换。

完全可访问

这个网站具有完全的可访问性。你可以用键盘完成所有导航操作。我在所有图片中添加了 alt 文本、不跳过标题层级、使用语义化 HTML 标签、合理使用 aria 属性——遵循了无障碍最佳实践。

搜索框、分类与标签

所有博客内容都可以通过搜索框检索。内容也可以按分类和标签筛选。这样一来,读者可以找到并阅读自己真正需要的文章。

性能和 Lighthouse 评分

由于规范的开发实践和最佳做法,这个网站获得了很高的性能和 Lighthouse 评分。以下是这个网站的 Lighthouse 评分。

satnaing.dev Lighthouse 评分

动画效果

最初我使用 Framer Motion 为网站添加动画和微交互。但当我尝试一些复杂动画和视差效果时,发现与 Framer Motion 配合起来并不方便(可能是我不够熟练吧)。因此,我决定使用 GSAP 来处理所有动画。它是最流行的动画库之一,能够完成复杂和高级的动画效果。在网站的几乎每个页面你都能看到动画和微交互效果。

satnaing.dev 网站上的动画效果

结语

总之,这个项目让我在博客网站(SSG)开发方面获得了大量经验和信心。现在我已经掌握了基于 Git 的 CMS 及其与 NextJS 的交互方式,也学会了 SEO、动态站点地图生成和 Google 索引流程。未来我会做出更好的项目。敬请期待!✌🏻

最后但同样重要的是,感谢我的朋友 Swann Fevian Kyaw(@ToonHa)为我网站 Hero 区域绘制了精美的插画。

项目链接


编辑页面
分享这篇文章:

评论


上一篇
【转载】我是如何用 React 开发终端风格作品集网站的