技术

欢迎来到我的新博客 Welcome to My New Blog

XinLiu
2 分钟阅读 min read
Astro 博客封面图

🎉 博客正式上线

经过一段时间的准备和开发,我的个人博客终于正式上线了!这个博客使用了当前最流行的技术栈构建,包括:

  • Astro - 现代化的静态站点生成器
  • Tailwind CSS - 实用优先的 CSS 框架
  • TypeScript - 类型安全的 JavaScript
  • Cloudflare Pages - 全球边缘网络部署

为什么选择 Astro?

在众多的静态站点生成器中,我最终选择了 Astro,主要基于以下几个原因:

1. 极致的性能

Astro 采用了独特的 Islands Architecture(岛屿架构),默认情况下不向客户端发送任何 JavaScript。这意味着:

  • ⚡ 更快的加载速度
  • 📱 更好的移动端体验
  • 🔍 更好的 SEO 表现

2. 灵活的框架集成

// 可以在同一个项目中使用不同的框架
import ReactComponent from './components/React.jsx';
import VueComponent from './components/Vue.vue';
import SvelteComponent from './components/Svelte.svelte';

3. 内容优先的设计理念

Astro 的 Content Collections 功能让管理博客文章变得异常简单:

// src/content/config.ts
const blog = defineCollection({
  schema: z.object({
    title: z.string(),
    description: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()),
  }),
});

博客功能特性

这个博客实现了以下核心功能:

  • Markdown 支持 - 使用 Markdown 编写文章,支持代码高亮
  • 响应式设计 - 完美适配各种设备
  • 暗色模式 - 保护眼睛,适应不同环境
  • 评论系统 - 基于 GitHub Discussions 的 Giscus
  • RSS 订阅 - 方便读者订阅更新
  • 自动部署 - GitHub Actions + Cloudflare Pages

代码示例

这里是一个简单的 Astro 组件示例:

---
// Component Script (runs on server)
const { title } = Astro.props;
const items = await fetch('/api/items').then(res => res.json());
---

<!-- Component Template (HTML + JS) -->
<div>
  <h1>{title}</h1>
  <ul>
    {items.map(item => (
      <li>{item.name}</li>
    ))}
  </ul>
</div>

未来计划

在接下来的时间里,我计划:

  1. 🎯 定期分享技术文章和学习心得
  2. 🛠️ 持续优化博客功能和用户体验
  3. 🤝 与读者互动,共同学习成长
  4. 📚 构建个人知识库

结语

感谢你访问我的博客!如果你对文章内容有任何问题或建议,欢迎在评论区留言。让我们一起在技术的道路上不断前行!


P.S. 如果你也想搭建类似的博客,可以查看我的 GitHub 仓库,里面有完整的源代码和搭建教程。