测试文章 - Post 页面完整功能展示

发布于 字数统计 2.3k 字 阅读时长 8 分钟

测试文章 - Post 页面完整功能展示

发布于 字数统计 2,268 阅读时长 12 分钟

欢迎来到新的 Post 页面

这是一篇测试文章,用于展示从 hexo-theme-shokaX 迁移过来的 Post 页面功能。

功能清单

我们已经成功迁移了以下功能:

  1. 面包屑导航 - 显示文章的分类层级
  2. 文章头部 - 包含标题、发布日期、字数统计、阅读时间
  3. 文章内容 - Markdown 渲染的主体内容
  4. 标签显示 - 文章底部的标签列表
  5. 版权信息 - 包含作者、链接和许可协议
  6. 文章导航 - 上一篇/下一篇文章链接

样式迁移

所有原始样式都已从 Stylus 转换为 CSS:

  • Post 基础样式
  • 面包屑样式
  • 文章头部和元信息样式
  • 标签样式
  • 版权信息样式
  • 文章导航样式

技术栈

  • Astro - 主要框架
  • UnoCSS - 样式工具
  • Svelte - 部分交互组件
  • TypeScript - 类型安全

代码示例

function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("ShokaX"));
function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("ShokaX"));
function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("ShokaX"));
function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("ShokaX"));
function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("ShokaX"));
function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("ShokaX"));
function greet(name: string): string {
  return `Hello, ${name}!`;
}

console.log(greet("ShokaX"));

列表示例

无序列表

  • 项目一
  • 项目二
    • 子项目 2.1
    • 子项目 2.2
  • 项目三

有序列表

  1. 第一步
  2. 第二步
  3. 第三步

引用

这是一段引用文字。

可以包含多个段落。

隐藏内容隐藏内容

总结

通过这次迁移,我们成功地将 hexo-theme-shokaX 的 Post 页面功能完整地迁移到了 Astro 项目中,保持了原有的样式和布局,同时使用了更现代的技术栈。


CodeBlock(Shiki Transformers)样式测试

下面这些代码块用于测试 @shikijs/transformers 在本主题中的渲染效果(对应你在 astro.config.mjs 里启用的 transformers)。

transformerMetaHighlight(代码块 Meta 高亮行)

const a = 1;
const b = 2;
const c = 3;
const d = 4;
console.log({ a, b, c, d });

transformerNotationHighlight(行高亮)

console.log("Not highlighted");
console.log("Highlighted"); 
console.log("Not highlighted");
console.log("Highlighted 1");
console.log("Highlighted 2");
console.log("Not highlighted");

transformerNotationDiff(Diff 增删行)

const oldName = "hewwo"; 
const newName = "hello"; 
console.log({ oldName, newName });

transformerNotationFocus(聚焦行)

console.log("Not focused");
console.log("Focused"); 
console.log("Not focused");
console.log("Focused 1");
console.log("Focused 2");
console.log("Not focused");

transformerNotationErrorLevel(Error / Warning 级别)

console.log("No errors or warnings");
console.error("Error"); 
console.warn("Warning");