YumeLog:我写的高颜值个性化主页系统

|1 个月前
最近我把自己的个人主页系统整理并开源了,项目名字叫做 yumeLog(ユメログ)。项目已经支持全页面SEO(BASE: VITE-SSG),每次编译你都可以将你所有博客文章生成专为robot提供的 index.html 。经过测试telegram/QQ/Google都能正确识别并生成卡片。 一个编译后连代码高亮js部分只有1M的极简主页/博客系统项目基于 Vue3 + TypeScript + NaiveUI开发,目标不是做传统博客,而是做一个更像“个人数字名片”的网站。GitHub 地址:点我查看项目仓库
yumeLog Home 桌面端预览
yumeLog Home 桌面端预览
yumeLog Home 移动端预览
yumeLog Home 移动端预览
为什么写这个项目?为什么不用通用解决方案捏:不符合我胃口,UI设计不喜欢。其次是比较重,大多需要后端,部署复杂,维护火葬场,我的vps就300G月流量要干很多事情。以及个人信息展示能力很弱。所以我干脆自己写了一:一个完全静态的个人主页 + 博客。没有后端,没有数据库,只需要托管静态文件即可运行。担心国内被劫持访问不了?没关系支持热备。
核心技术特点自研文本解析引擎:项目没有使用 Markdown,而是自己写了一套轻量级解析器。支持:bold underline strike center link thin code info warning 。而且支持 无限嵌套。你可以使用- type: "divider"为文本进行分段,也可以用- type: "image"为文章添加图片和描述。
点我进查看语法示例
完整示例yumeDSL
@meta
layout: common
time: 20260316
lang: zh
id: bangkok-life
pin: true
title: 曼谷的午后喵
summary: 这是一篇用于演示 yumeDSL 语法结构的文章
cover: /data/blog/img/post3/home-laptop.webp
@end

@text
欢迎来到 $$bold(yumeDSL)$$ 示例。
它支持 $$underline(嵌套 inline)$$、$$link(https://example.com | 链接)$$、$$thin(弱强调)$$ 与 $$code(code tag)$$。
$$center($$bold(这是一个中心对齐的嵌套示例)$$)$$
$$info(提示标题 | 这一段是 inline titled block,支持标题与正文分离)$$
$$warning(注意事项)%
这是一段 raw 形态的 warning。
它会保留原始换行,并且支持像 %end$$ 这样的转义闭合符。
%end$$
$$collapse(点我展开查看块级正文)*
这里是 block 形态的 collapse。
你可以在正文里继续写 $$bold(嵌套 rich text)$$。
也可以继续写 $$info(块内提示 | 支持继续解析 inline)$$。
如果你想在 block 正文里直接写闭合符本身,可以写成 \*end$$,它不会提前闭合当前块。
*end$$
$$raw-code(json | demo.json | JSON 示例)%
{
  "hello": "world",
  "nested": true
}
%end$$
@end

@image
- src: https://example.com/cover.webp
  spareUrl: /data/blog/img/post3/home-laptop.webp
  alt: 曼谷街景
  desc: "I \"love\" Bangkok"

- src: https://example.com/cat.webp
  spareUrl: /data/blog/img/post3/blog-phone.webp
  desc: |
    这是多行支持
    123
    这里仍然属于同一个字段

- src: https://example.com/night.webp
  desc: 请注意这是完全缩进语言
@end

@divider
@end

@text
\@image                     -->   @image
\\@image                    -->   \@image
\\\@image                   -->   \\@image
\@end                       -->   @end
- inline-close: \)$$        -->   )$$
- raw-close: %end$$        -->   %end$$
- block-close: \*end$$      -->   *end$$
- desc: "I \"love\" BKK"     -->   I "love" BKK
- path: "C:\\\\Users"       -->   C:\\Users
- mixed: "\\\\\\" "         -->   \\"
$$bold(很好)$$
$$info(正常示例 | 这一块标题和正文都合法)$$
$$link(https://github.com/chiba233/YumeLog | $$bold(链接正文也能继续嵌套)$$)$$
@end
yumeLog Blog 桌面端预览
yumeLog Blog 桌面端预览
yumeLog Blog 移动端预览
yumeLog Blog 移动端预览
YAML 内容驱动:博客文章全部使用 YAML 编写,例如:id / time / title / blocks,每个文章由多个 block组成。支持:文本块 图片块 多图片展示。因为是纯数据驱动,所以:不需要数据库,也不需要后端
完全静态架构:所有数据都来自仓库文件:YAML JSON 图片资源,所以部署非常简单:GitHub Pages Cloudflare Pages Vercel Nginx都可以直接部署。
点我进查看url配置示例
url配置示例json
{
  "blog": {
    "listUrl": "https://YOUR-LIST_URL",
    "url": "https://YOUR_URL",
    "spareUrl": "/YOUR_SPARE-URL",
    "spareListUrl": "/YOUR_SPARE_LIST_URL"
  },
  "main": {
    "url": "这里主要是你个人简介那堆东西的地址,就是在/public/data/main里的那堆东西,你当然也可以远程,但是丢服务器就行了",
    "spareUrl": "/YOUR_SPARE-URL",
    "listUrl": "/YOUR_SPARE_LIST_URL"
  }
}
个人主页模块:除了博客系统之外,yumeLog 还包含完整的个人展示模块:主题系统 多语言支持 纪念日时间线 友链展示 联系方式 照片墙,本质上它更像是:一个完整的个人网站框架全融合的主题: yumelog本身会使用你在json内配置的主题色来生成: 浅色及加深色供不同区域使用以增强美观度或可读性。 友链展示说明socialLinks内每个都可以删掉,删掉后ui会自动取消渲染该内容。platforms里面正常情况下你不需要动。
点我进查看友链配置示例
友链展示json
{
  "socialLinks": {
    "twitter": "https://x.com/HoshinoYumeka2",
    "tron": "https://tronscan.org/#/address/TVB16jV3Jx2HTn9U1KjyBSN1u9MQ29FArs",
    "areth": "https://arbiscan.io/address/0x3eb232c80307961795C1310374368834c25A41e6",
    "eth": "https://etherscan.io/address/0x3eb232c80307961795C1310374368834c25A41e6",
    "polygon": "https://polygonscan.com/address/0x3eb232c80307961795C1310374368834c25A41e6",
    "bsc": "https://bscscan.com/address/0x3eb232c80307961795C1310374368834c25A41e6",
    "solana": "https://solscan.io/account/CwmEwePc5TxyQG57e3f4WBufTvGFv264KAGfVRoSZd7V",
    "telegram": "https://t.me/chiba2333",
    "email": "mailto:qwq@qwwq@org",
    "github": "https://github.com/chiba233"
  },
  "platforms": [
    {
      "id": "telegram",
      "label": "Telegram",
      "type": "link"
    },
    {
      "id": "wechat",
      "label": "WeChat",
      "type": "modal"
    },
    {
      "id": "line",
      "label": "LINE",
      "type": "modal"
    },
    {
      "id": "email",
      "label": "E-Mail",
      "type": "link"
    },
    {
      "id": "twitter",
      "label": "Twitter",
      "type": "link"
    },
    {
      "id": "github",
      "label": "GitHub",
      "type": "link"
    },
    {
      "id": "tron",
      "label": "Tron",
      "type": "link"
    },
    {
      "id": "eth",
      "label": "Ethereum",
      "type": "link"
    },
    {
      "id": "areth",
      "label": "Arbitrum",
      "type": "link"
    },
    {
      "id": "bsc",
      "label": "BSC-BNB",
      "type": "link"
    },
    {
      "id": "polygon",
      "label": "Polygon",
      "type": "link"
    },
    {
      "id": "solana",
      "label": "Solana",
      "type": "link"
    },
    {
      "id": "maimai",
      "label": "maimai",
      "type": "func"
    },
    {
      "id": "cat",
      "label": "cat",
      "type": "func"
    }
  ]
}
From Now Time 模块:
点我进查看From Now Time 模块配置示例
fromNowyaml
fromNow: #起始块不能删
  - time: "20161225" #时间
    photo: "" #预留 还没做
    names:
      - type: "zh"
        content: "你好"
      - type: "en"
        content: "Hello!"
      - type: "ja"
        content: "天気がいいから、散歩しましょう"
      - type: "other"
        content: "Hello!"
        #请注意,自己的东西都得自己翻译
list.json配置: 请注意,这必须是数组!
点我进查看list.json配置示例
list.jsonjson
[
  "post1.yaml",
  "post2.yaml",
  "post3.yaml"
]
纪念日预览
纪念日预览
照片展示墙预览
照片展示墙预览
Maimai 玩家模块:如果你是WMC,这个功能会非常有意思。项目原生支持:Maimai DX 成绩展示可以在主页直接展示你的:段位 Rating 成绩列表,数据来自 Aqua 服务器 API。
点我进查看maimai配置文件示例
maimai配置文件json
{
  "baseUrl": "aqua.server.com",
  "aimeID": "1145141919810"
}
maimai成绩展示预览
maimai成绩展示预览
如果你也想搭建一个:极简但高颜值的个人主页,可以看看这个项目:GitHub 仓库地址,如果觉得有意思的话。 欢迎点个 Star ⭐