{"id":44674200,"url":"https://github.com/null-object-0000/newbie-space","last_synced_at":"2026-02-15T02:35:11.249Z","repository":{"id":331811404,"uuid":"1132007428","full_name":"null-object-0000/newbie-space","owner":"null-object-0000","description":"我的个人导航与博客","archived":false,"fork":false,"pushed_at":"2026-02-05T01:58:54.000Z","size":5176,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-05T14:12:38.371Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://null-object-0000.github.io/newbie-space/","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/null-object-0000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-11T05:57:37.000Z","updated_at":"2026-02-05T01:58:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/null-object-0000/newbie-space","commit_stats":null,"previous_names":["null-object-0000/newbie-home","null-object-0000/newbie-space"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/null-object-0000/newbie-space","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-object-0000%2Fnewbie-space","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-object-0000%2Fnewbie-space/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-object-0000%2Fnewbie-space/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-object-0000%2Fnewbie-space/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/null-object-0000","download_url":"https://codeload.github.com/null-object-0000/newbie-space/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/null-object-0000%2Fnewbie-space/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29465772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T01:01:38.065Z","status":"online","status_checked_at":"2026-02-15T02:00:07.449Z","response_time":118,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-15T02:35:10.545Z","updated_at":"2026-02-15T02:35:11.241Z","avatar_url":"https://github.com/null-object-0000.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Newbie Space\n\n一个基于 Vue 3 + Vite + SSG 的个人博客和导航站点，支持自动从 Markdown 文件读取文章，并提供丰富的自定义 Markdown 语法。\n\n## ✨ 特性\n\n- 📝 **自动文章管理**：从 Markdown 文件自动读取文章，无需手动维护文章列表\n  - 自动提取文章标题（从第一个 `#` 标题）\n  - 自动生成文章摘要（前 200 字符）\n  - 自动计算阅读时间（中文 300 字/分钟，英文 200 词/分钟）\n- 🎨 **自定义 Markdown 语法**：扩展了图片画廊、时间线、折叠详情块等语法\n- 🚀 **静态站点生成**：使用 `vite-ssg` 生成静态 HTML，部署简单\n- 📱 **响应式设计**：完美适配桌面端和移动端\n- 🎯 **导航管理**：支持快速链接导航，可通过脚本添加新链接\n\n## 🚀 快速开始\n\n### 安装依赖\n\n```bash\nnpm install\n# 或\npnpm install\n```\n\n### 开发\n\n```bash\nnpm run dev\n```\n\n### 构建\n\n```bash\nnpm run build\n```\n\n### 预览构建结果\n\n```bash\nnpm run preview\n```\n\n## 📁 项目结构\n\n```\nnewbie-home/\n├── src/\n│   ├── components/          # Vue 组件\n│   │   ├── blog/            # 博客相关组件\n│   │   │   ├── ImageGallery.vue    # 图片画廊\n│   │   │   ├── ImageViewer.vue     # 图片查看器\n│   │   │   ├── Timeline.vue         # 时间线\n│   │   │   └── MarkdownRenderer.vue # Markdown 渲染器\n│   │   ├── nav/             # 导航相关组件\n│   │   ├── AppHeader.vue     # 页面头部\n│   │   └── AppFooter.vue     # 页面底部\n│   ├── views/               # 页面视图\n│   │   ├── Home.vue         # 首页\n│   │   ├── Blog.vue          # 博客列表\n│   │   ├── Post.vue          # 文章详情\n│   │   ├── Nav.vue           # 导航页面\n│   │   └── Projects.vue     # 项目展示\n│   ├── content/             # 内容文件\n│   │   └── posts/           # 博客文章（Markdown 文件）\n│   ├── data/                # 数据文件\n│   │   ├── posts.ts         # 文章索引（自动生成）\n│   │   ├── projects.ts      # 项目数据\n│   │   └── nav-data.json    # 导航数据\n│   ├── composables/         # 组合式函数\n│   │   ├── useMarkdown.ts   # Markdown 处理\n│   │   └── useTheme.ts      # 主题切换\n│   └── router/              # 路由配置\n├── public/                  # 静态资源\n│   ├── posts/               # 文章图片\n│   └── icons/               # 图标文件\n└── scripts/                 # 工具脚本\n    └── add-nav.js           # 添加导航链接\n```\n\n## 📝 编写博客文章\n\n### 创建新文章\n\n在 `src/content/posts/` 目录下创建新的 Markdown 文件（如 `2025-05.md`）。\n\n### Frontmatter 规范\n\n每个 Markdown 文件需要在开头包含 frontmatter：\n\n```yaml\n---\ndate: 2025-05\ntags:\n  - 标签1\n  - 标签2\ncover: null  # 或图片路径\n---\n\n# 文章标题（会自动提取）\n\n文章正文内容...\n```\n\n**必填字段：**\n- `date`: 发布日期，格式 `YYYY-MM` 或 `YYYY-MM-DD`\n\n**可选字段：**\n- `tags`: 标签数组\n- `cover`: 封面图片路径，`null` 表示无封面\n\n**自动提取：**\n- `title`: 从第一个 `#` 标题自动提取\n- `excerpt`: 从文章开头自动提取前 200 字符\n- `readTime`: 根据文章字数自动计算\n\n### 示例\n\n```markdown\n---\ndate: 2025-05\ntags:\n  - Vue\n  - 前端\n  - 教程\ncover: null\n---\n\n# Vue 3 组合式 API 入门指南\n\n这是一篇关于 Vue 3 组合式 API 的文章...\n\n## 什么是组合式 API\n\n组合式 API 是 Vue 3 引入的新特性...\n```\n\n## 🎨 自定义 Markdown 语法\n\n### 图片画廊 (:::images)\n\n用于展示多张图片，支持点击查看大图。\n\n```markdown\n:::images\n![图片描述1](/posts/2025-04/web_01.png)\n![图片描述2](/posts/2025-04/web_02.png)\n![图片描述3](/posts/2025-04/web_03.png)\n:::\n```\n\n**特性：**\n- 根据图片数量自动调整布局（1-5 张图片有不同的布局）\n- 点击图片可在全屏查看器中查看\n- 支持键盘导航（`←` / `→` 切换，`ESC` 关闭）\n- 响应式设计，移动端自动适配\n\n### 时间线 (:::timeline)\n\n用于展示时间线事件，适合记录问题排查过程、操作步骤等。\n\n```markdown\n:::timeline\n- **2025-04-09 18:16:35** 业务报演出票务后台访问异常、无法访问\n- **2025-04-09 18:19:56** 通过 CI/CD 平台发现机器异常，请求全部 500\n- **2025-04-09 18:22:34** 将异常机器剔除负载后应用访问正常\n:::\n```\n\n**特性：**\n- 时间戳使用 `**粗体**` 标记会以品牌色显示\n- 自动添加时间线连接和标记点\n- 响应式设计\n\n### 折叠详情块 (:::details)\n\n用于创建可折叠的内容块，适合放置长代码、详细说明等。\n\n```markdown\n:::details 查看完整代码\n# 这里是代码\ncat /data/logs/app.log\n:::\n```\n\n**特性：**\n- 点击标题可展开/折叠内容\n- 内容区域支持所有 Markdown 语法\n- 适合放置长代码块和详细日志\n\n## 🛠️ 工具脚本\n\n### 添加导航链接\n\n```bash\nnpm run add-nav\n```\n\n运行后会交互式地添加新的导航链接到 `src/data/nav-data.json`。\n\n## 🎯 技术栈\n\n- **框架**: Vue 3 (Composition API)\n- **构建工具**: Vite\n- **静态生成**: vite-ssg\n- **路由**: Vue Router 4\n- **Markdown 解析**: markdown-it + markdown-it-container\n- **样式**: CSS Variables + 响应式设计\n- **字体**: Noto Sans SC + Outfit\n\n## 📦 主要依赖\n\n### 生产依赖\n\n- `vue`: ^3.4.0\n- `vue-router`: ^4.6.4\n- `markdown-it`: ^14.1.0\n- `markdown-it-container`: ^4.0.0\n- `lucide-vue-next`: ^0.562.0 (图标库)\n\n### 开发依赖\n\n- `vite`: ^5.4.21\n- `vite-ssg`: ^0.23.8\n- `typescript`: ^5.9.3\n- `@vitejs/plugin-vue`: ^5.2.4\n\n## 🔧 配置说明\n\n### Vite 配置\n\n项目使用 Vite 作为构建工具，配置文件为 `vite.config.ts`。\n\n主要配置：\n- 路径别名：`@` 指向 `src` 目录\n- SSG 选项：异步脚本加载、代码压缩等\n\n### 路由配置\n\n路由配置在 `src/router/index.ts`，支持：\n- 首页 (`/`)\n- 导航页 (`/nav/`)\n- 博客列表 (`/posts`)\n- 文章详情 (`/posts/:slug`)\n- 项目展示 (`/projects`)\n\n所有博客文章路由会在构建时自动生成。\n\n## 📄 许可证\n\nMIT\n\n## 🙏 致谢\n\n- [Vue.js](https://vuejs.org/)\n- [Vite](https://vitejs.dev/)\n- [vite-ssg](https://github.com/antfu/vite-ssg)\n- [markdown-it](https://github.com/markdown-it/markdown-it)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnull-object-0000%2Fnewbie-space","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnull-object-0000%2Fnewbie-space","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnull-object-0000%2Fnewbie-space/lists"}