Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Stellar

WinUI 3 风格的技术博客,基于 Astro 静态生成。干净、快速、无障碍。

特性

页面与布局

  • 首页分页 — 置顶文章优先,数字分页导航,每页 5 篇
  • 文章详情 — 双栏布局(正文 + 粘性目录),阅读时间 / 字数统计,面包屑导航,上一篇/下一篇
  • 标签系统 — 标签云 + 按标签聚合文章列表
  • 时间线归档 — 按年份分组,带时间轴竖线
  • 好友链接 — 友链卡片网格,一键交换信息
  • 站内搜索 — Pagefind 离线全文检索,Fluent 风格 UI 适配
  • 关于页面 — 作者介绍 + 技术栈说明

阅读体验

  • 阅读进度条 — 页面顶部 3px 进度指示
  • 粘性目录 — 跟随滚动,高亮当前区域
  • 代码复制 — 代码块一键复制,hover 出现
  • 代码 Diff — +/- 行高亮 + 行级高亮 {1,3-5}
  • 数学公式 — KaTeX,$x^2$ / $$block$$ 语法
  • 图表 — Mermaid 流程图、时序图等
  • Callout 块 — > [!NOTE/TIP/INFO/WARNING/DANGER] GFM 风格
  • 脚注 — [^id] 智能脚注 + 回链
  • 标题锚点 — hover 显示 #,直接链接到段落
  • 图片灯箱 — 点击放大,ESC 关闭
  • 打印优化 — @media print 隐藏装饰元素,适配纸张排版
  • 返回顶部 — 右下角浮动按钮

设计与主题

  • Fluent Design System — Acrylic 毛玻璃、4 级阴影、Fluent 动画曲线
  • 四芒星 Logo — 双层叠加 Starburst 渐变图标,呼应站点名 Stellar(星际)
  • 三态主题 — 浅色 / 深色 / 跟随系统,防闪烁 (FOUC),SPA 导航主题同步
  • ViewTransitions — 页面切换淡入动画
  • 响应式 — 768px 侧边栏收起、480px 手机优化
  • 字体 — Segoe UI Variable / Cascadia Code(等宽)

无障碍 (A11y)

  • 跳过导航链接(Skip-to-content)
  • 语义化 HTML(nav / article / aside / time)
  • aria-label / aria-current / aria-expanded 全覆盖
  • 键盘可操作(ESC 关闭侧边栏/灯箱,Tab 焦点可见)
  • prefers-reduced-motion 尊重用户动效偏好
  • 触摸目标 ≥ 44px 优化
  • lang="zh-CN" 正确的文档语言

SEO

  • 自动 OG 图片生成(Satori + Resvg,1200x630)
  • JSON-LD 结构化数据(BlogPosting、BreadcrumbList、Person、WebSite)
  • Sitemap + Canonical URL + RSS Feed
  • IndexNow 搜索引擎主动推送
  • 安全头(CSP、X-Content-Type-Options、Referrer-Policy)

分享

  • Twitter/XIntent 链接分享
  • 一键复制链接

快速开始

npm install
npm run dev        # http://localhost:4321

命令

命令 说明
npm run dev 启动开发服务器
npm run build 生产构建 → dist/
npm run preview 本地预览构建产物
npm run verify 构建 + SEO 检查 + 链接检查
npm run backup -- "描述" 创建带时间戳的 Git 备份标签
npm run backup -- "描述" --push 创建备份并推送到远程

编写内容

文章存放在 src/content/blog/,使用 Markdown 编写:

---
title: 文章标题
description: SEO 描述
pubDate: 2024-01-01
updated: 2024-06-01
tags: ["Astro", "前端"]
heroImage: /path/to/image.png  # 可选封面图
pinned: true                    # 置顶
draft: false                    # 草稿(不发布)
series: 系列名称                # 文章系列
---

正文内容...

扩展语法

Callout 块:

> [!NOTE] 备注
> 这里是一段备注内容。

> [!TIP] 提示
> 这里是一段提示内容。

> [!INFO] 信息
> [!WARNING] 警告
> [!DANGER] 危险

代码 Diff:

```js
+ const added = '新增行';
- const removed = '删除行';
```

代码行高亮:

```js {1,3-5}
// 高亮第 1 行和第 3-5 行
```

数学公式:

行内 $E = mc^2$ 公式

$$
\int_0^\infty e^{-x} dx = 1
$$

Mermaid 图表:

```mermaid
graph TD
  A[开始] --> B[结束]
```

项目结构

├── public/              # 静态资源
│   ├── _headers         # HTTP 安全头 + OG 图片缓存策略
│   ├── favicon.svg      # 四芒星品牌图标
│   └── robots.txt
├── scripts/             # 构建验证脚本
│   ├── verify.mjs       # 全链路检查(构建 + SEO + 链接)
│   ├── check-seo.mjs    # SEO 标签完整性验证
│   ├── check-links.mjs  # 外链状态码扫描
│   ├── backup.mjs       # Git 备份标签
│   └── submit-indexnow.mjs  # 搜索引擎提交
├── src/
│   ├── components/      # UI 组件
│   │   ├── Avatar.astro
│   │   ├── BackToTop.astro
│   │   ├── CodeCopy.astro
│   │   ├── HeadingAnchor.astro
│   │   ├── ImageLightbox.astro
│   │   ├── JsonLd.astro
│   │   ├── MermaidBlock.astro
│   │   ├── ProgressBar.astro
│   │   ├── ScrollRestore.astro
│   │   ├── ShareButtons.astro
│   │   ├── Sidebar.astro
│   │   └── TableOfContents.astro
│   ├── content/         # Content Collections
│   │   ├── blog/*.md    # 文章
│   │   └── config.ts    # Schema 定义
│   ├── data/
│   │   └── site.ts      # 站点配置
│   ├── layouts/
│   │   └── BaseLayout.astro  # 根布局(head、导航、主题)
│   ├── pages/           # 路由
│   │   ├── [...page].astro        # 首页分页
│   │   ├── about.astro            # 关于
│   │   ├── blog/[...slug].astro   # 文章详情
│   │   ├── friends.astro          # 友链
│   │   ├── rss.xml.js             # RSS
│   │   ├── search.astro           # 搜索
│   │   ├── tags.astro             # 标签云
│   │   ├── tags/[tag].astro       # 标签聚合
│   │   ├── timeline.astro         # 时间线
│   │   ├── 404.astro              # 404
│   │   └── og/                    # OG 图片生成
│   ├── plugins/          # Remark / Rehype 插件
│   │   ├── rehype-callouts.mjs
│   │   └── remark-footnotes.mjs
│   └── styles/
│       └── global.css    # 全局样式(Fluent 变量、打印、暗色主题)
├── .editorconfig
├── .nvmrc               # Node.js 22
├── astro.config.mjs
├── package.json
└── tsconfig.json

配置

编辑 src/data/site.ts:

SITE_TITLE        // 站点标题
SITE_DESC         // SEO 描述
AUTHOR_NAME       // 作者名
AUTHOR_BIO        // 作者简介
AUTHOR_AVATAR     // 头像路径 (public/ 下),留空显示文字头像
NAV_ITEMS         // 侧边导航菜单 { href, label, icon }
POSTS_PER_PAGE    // 首页每页文章数
READING_SPEED_CN  // 中文阅读速度(字/分钟)
READING_SPEED_EN  // 英文阅读速度(词/分钟)
FRIENDS           // 友链列表 [{ name, url, desc, avatar }]
UI                // 页面文案统一管理(按钮、标签、提示等)

生产环境设置站点 URL:

# .env
PUBLIC_SITE_URL=https://your-domain.com

部署

输出为纯静态站点,可部署到任意平台:

npm run build
npm run verify   # 可选:检查 SEO 和外链
# 将 dist/ 部署为站点根目录

许可

MIT

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages