Skip to content
返回

我如何开发我的作品集网站和博客

Edit page

这篇文章最初来自我的博客文章。我放置这篇文章是为了演示如何使用 AstroPaper 主题编写博客文章/文章。

我使用 NextJS 和无头 CMS 开发第一个作品集网站和博客的经验。

构建作品集

动机

自从大学生活以来,我一直在考虑用我的自定义域名(satnaing.dev)启动我自己的网站。但直到这个项目之前,这从未发生过。我已经完成了几个关于 Web 应用程序开发的项目和工作,但我没有努力去做这件事。

那么,“博客怎么样?“你可能会问。是的,博客也在我的项目列表中有一段时间了。我一直想使用一些最新技术制作一个博客项目。然而,我一直忙于我的工作和其他项目,所以博客项目从未开始。

在这些日子里,我倾向于开发我自己的项目,专注于质量而不是数量。项目完成后,我通常会在 GitHub 仓库中放置一个合适的 readme 文件。但 GitHub 仓库的 readme 只适合技术方面(这只是我的想法)。我想写下我的经验和挑战。因此,我决定制作我自己的博客。另外,在这一点上,我有足够的经验和信心来开发这个项目。

技术栈

对于前端,我想使用 React。但仅仅 React 对 SEO 来说不够好;我确实必须考虑许多因素,如路由、图像优化等。所以,我选择 NextJS 作为我的主要前端技术栈。当然还有 TypeScript 用于类型检查。(据说当你习惯了 TypeScript 后会爱上它 😉)

对于样式,我使用 TailwindCSS。这是因为我喜欢 Tailwind 提供的开发者体验,与其他组件 UI 库(如 MUI 或 React Bootstrap)相比,它具有很多灵活性。

这个项目的所有内容都存储在 GitHub 仓库中。我所有的博客文章(包括这篇)都是用 Markdown 文件格式编写的,因为我非常习惯这种格式。但为了轻松地编写 Markdown 及其前置元数据,我使用 Forestry 无头 CMS。它是一个基于 git 的 CMS,可以提供 Markdown 和其他内容。因此,我可以使用 Markdown 或所见即所得编辑器编写我的内容。此外,用这个编写前置元数据非常轻松。

图像和资源上传并存储在 Cloudinary 中。我通过 Forestry 连接 Cloudinary 并直接在仪表板中管理它们。

总之,这些是我在这个项目中使用的技术栈。

功能特性

以下是我的作品集和博客的某些功能特性

SEO 友好

整个项目都是以 SEO 为重点开发的。我使用了适当的元标签、描述和标题对齐。这个网站现在已被 Google 索引。

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

在 Google 上搜索 satnaing.dev

此外,由于正确使用了元标签,这个网站在分享到社交媒体时会显示得很好。

分享到 Facebook 时的 satnaing.dev 卡片布局

动态站点地图

站点地图在 SEO 中起着重要作用。因此,这个网站的每一个页面都应该包含在 sitemap.xml 中。每当我创建新内容或标签或类别时,我都会在我的网站中生成自动站点地图。

明暗主题

由于近年来深色主题的趋势,现在许多网站都开箱即用地包含深色主题。当然,我的网站也支持明暗主题。

完全可访问

这个网站是完全可访问的。你可以仅使用键盘导航。我采用了所有 a11y 增强最佳实践,如在所有图像中包含 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) 说声”谢谢”,他为我网站的主页部分绘制了一幅美丽的插图。

项目链接


Edit page
分享到别处:

上一篇文章
我如何使用 React 开发我的终端作品集网站