feat:增加博客formatter

This commit is contained in:
2025-12-16 18:07:42 +08:00
parent b4db9aae81
commit ac278aae47
35 changed files with 287 additions and 5 deletions

View File

@@ -20,8 +20,8 @@ export default withMermaid({
logo: "/logo.png",
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: 'Home', link: '/' },
{ text: 'Web前端',
{ text: '🏠 Home', link: '/' },
{ text: '🌐Web前端',
items: [
{
text: 'Vue',
@@ -41,7 +41,7 @@ export default withMermaid({
},
]
},
{ text: 'Web后端',
{ text: '🖥️ Web后端',
items: [
{
text: 'SpringBoot',
@@ -75,7 +75,7 @@ export default withMermaid({
},
]
},
{ text: 'DevOps',
{ text: '🚀 DevOps',
items: [
{ text: 'OpenObserve部署和使用', link: '/DevOps/OpenObserve' },
{ text: 'Jenkins部署和使用', link: '/DevOps/Jenkins' },
@@ -83,7 +83,7 @@ export default withMermaid({
{ text: 'Docker简介和安装', link: '/DevOps/Docker' }
]
},
{ text: 'Flutter',
{ text: '📱 Flutter',
items: [
{ text: 'Dart基础教程', link: '/Flutter/DartGuide' },
{ text: 'Flutter基础教程', link: '/Flutter/FlutterGuide' },
@@ -227,6 +227,9 @@ export default withMermaid({
markdown: {
lineNumbers: true,
image: {
lazyLoading: true
},
container: {
tipLabel: '提示',
warningLabel: '注意',

View File

@@ -0,0 +1,19 @@
import { createContentLoader } from 'vitepress'
export default createContentLoader('./**/*.md', {
includeSrc: true, // 包含原始 markdown 源
render: true, // 包含渲染的整页 HTML
transform(rawData) {
return rawData.filter(page => {
return page.url.includes('.html') && page.frontmatter.date
}).map((page) => {
// 对每个页面进行处理
return {
// 返回你需要的页面数据
title: page.frontmatter.title,
date: page.frontmatter.date,
url: page.url
}
})
}
})

View File

@@ -0,0 +1,59 @@
<template>
<calendar-heatmap
:values="heatmapData"
:end-date="new Date()"
no-data-text="暂无记录"
tooltip-unit=""
:round="2"
:locale="{
less: '少于',
more: '多于',
months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
days: ['日', '一', '二', '三', '四', '五', '六'],
}"
class="blog-heatmap"
/>
</template>
<script setup lang="ts">
import { CalendarHeatmap } from 'vue3-calendar-heatmap';
import 'vue3-calendar-heatmap/dist/style.css';
import { data } from '../../data/posts.data.js'
const dateCountMap = new Map<string, number>();
// 按日期分组统计
data.forEach(item => {
const date = item.date
if (dateCountMap.has(date)) {
dateCountMap.set(date, dateCountMap.get(date)! + 1);
} else {
dateCountMap.set(date, 1);
}
});
// 转换为目标格式
const heatmapData = Array.from(dateCountMap.entries()).map(([date, count]) => ({
date,
count
}))
</script>
<style scoped>
.blog-heatmap {
margin-top: 10px;
}
.blog-heatmap :deep(.vch__wrapper) {
font-family: 'CustomFont', sans-serif !important;
}
.blog-heatmap :deep(.vch__month__label) {
font-size: 8px !important;
}
.blog-heatmap :deep(.vch__day__label) {
font-size: 8px !important;
}
</style>

View File

@@ -1,6 +1,7 @@
import DefaultTheme from 'vitepress/theme'
import Confetti from "./components/Confetti.vue";
import ArticleMetadata from "./components/ArticleMetadata.vue"
import StatsChart from './components/StatsChart.vue'
import type { EnhanceAppContext } from 'vitepress'
import { onMounted, watch, nextTick } from 'vue'
import { useRoute } from 'vitepress'
@@ -30,6 +31,7 @@ export default {
},
enhanceApp({ app }: EnhanceAppContext) {
app.component("Confetti", Confetti);
app.component("StatsChart", StatsChart);
app.component("ArticleMetadata", ArticleMetadata);
},
};

View File

@@ -1,4 +1,6 @@
---
title: Docker简介和安装
date: 2025-12-15
isGreat: true
---

View File

@@ -1,3 +1,8 @@
---
title: ElasticSearch部署和使用
date: 2025-11-26
---
# 一、基础概念
&emsp;&emsp;Elasticsearch简称 ES是一款开源的分布式全文搜索引擎基于 Lucene 核心构建,提供了 RESTful API 接口、高可用、高扩展的分布式数据存储与检索能力,广泛应用于日志分析、全文检索、监控告警、数据可视化等场景。

View File

@@ -1,3 +1,8 @@
---
title: Jenkins部署和使用
date: 2025-11-26
---
# 一、Jenkins安装
## 1.1 简介
&emsp;&emsp;Jenkins 是一款开源的持续集成Continuous Integration, CI 和持续交付Continuous Delivery, CD 自动化工具,广泛应用于软件开发流程中,帮助团队实现代码构建、测试、部署的自动化,从而提升开发效率、减少人为错误,并确保软件质量。

View File

@@ -1,3 +1,8 @@
---
title: OpenObserve部署和使用
date: 2025-11-26
---
# 一、基础概念
## 1.1 Fluent Bit
&emsp;&emsp;[Fluent Bit](https://fluentbit.io/) 是一个开源的、轻量级、高性能的日志处理器和转发器。Fluent Bit 的核心任务是:​​**从各种来源收集日志、指标和追踪数据,进行处理和过滤,然后将其发送到一个或多个目的地。​**

View File

@@ -1,3 +1,8 @@
---
title: Dart基础教程
date: 2025-12-05
---
# 一、基础语法
## 1.1 变量与常量
```dart

View File

@@ -1,3 +1,8 @@
---
title: Flutter基础教程
date: 2025-12-05
---
# 应用核心Widget
```dart
// Flutter 应用的入口,配置主题、路由、国际化等。

View File

@@ -1,3 +1,8 @@
---
title: 实战技巧
date: 2025-12-03
---
# 安卓签名
&emsp;&emsp;每次安装/升级软件必须使用同一个签名,否则会将本地数据全部清空。
## 1. 生成密钥库文件

View File

@@ -1,3 +1,8 @@
---
title: FastAPI基础教程
date: 2025-12-10
---
# 一、简介
&emsp;&emsp;[FastAPI](https://fastapi.tiangolo.com/zh/) 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。
&emsp;&emsp;安装:

View File

@@ -1,3 +1,8 @@
---
title: 基于OAuth2的FastApi安全验证
date: 2025-11-29
---
# 一、基础概念
## 1.1 OAuth2 Password Bearer 模式​
&emsp;&emsp;用于**用户名+密码**登录,获取**access_token**。

View File

@@ -1,3 +1,8 @@
---
title: Flyway简单使用
date: 2025-11-27
---
# 一、简介
&emsp;&emsp;Flyway 是一个开源的数据库版本控制工具,它极大地简化了数据库的迁移和版本管理。它的核心思想是​​像**用 Git 管理代码一样来管理数据库的结构**​​。

View File

@@ -1,3 +1,8 @@
---
title: MyBatis简介和使用
date: 2025-11-27
---
# 一、简介
&emsp;&emsp;[MyBatis](https://mybatis.org/mybatis-3/)是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJOPlain Old Java Objects普通老式 Java 对象)为数据库中的记录。

View File

@@ -1,3 +1,8 @@
---
title: MySQL知识点
date: 2025-11-26
---
# MySQL知识点
## 一、基础知识
### 1.1 数据类型

View File

@@ -1,3 +1,8 @@
---
title: 网络编程简介
date: 2025-12-15
---
# 一、TCP
## 1.1 定义
&emsp;&emsp;TCPTransmission Control Protocol传输控制协议是互联网核心的**面向连接、可靠、字节流**的传输层协议,工作在 OSI 模型的传输层TCP/IP 模型的传输层),基于 IP 协议提供端到端的可靠数据传输服务。它是 HTTP、HTTPS、WebSocket、MQTT 等应用层协议的底层依赖,核心目标是解决 IP 协议 “无连接、不可靠、无顺序” 的缺陷,确保数据在不可靠的网络中准确、完整、有序地传输。

View File

@@ -1,3 +1,8 @@
---
title: RustFS简介和使用
date: 2025-12-09
---
# 简介
&emsp;&emsp;[RustFS](https://rustfs.com.cn/) 是一个基于 Rust 构建的高性能分布式对象存储系统。
&emsp;&emsp;具体以下特点:

View File

@@ -1,3 +1,8 @@
---
title: SpingBoot技巧
date: 2025-12-12
---
# 一、JsonView
&emsp;&emsp;JsonView 是 Jackson 提供的注解,用于控制对象序列化/反序列化时包含哪些字段。可以实现:
- 不同接口返回不同字段

View File

@@ -1,3 +1,8 @@
---
title: SpringBoot Common
date: 2025-12-15
---
# 一、框架说明
&emsp;&emsp;本框架基于Spring Boot3框架二次开发增加了依赖包管理和启动项配置等功能。

View File

@@ -1,3 +1,8 @@
---
title: SpringBoot启动流程
date: 2025-11-26
---
# 一、启动流程
![暂无图片](https://cxx0822.iepose.cn/rustfs/blog/7d7b8c086729d400a3891a20f2107fa6.png 'SpringBoot启动流程.png')

View File

@@ -1,3 +1,8 @@
---
title: SpringBoot3原生镜像
date: 2025-11-27
---
# 一、原生镜像
&emsp;&emsp;传统 Java 应用基于 JVM 运行,需要加载完整的类库和 JVM 运行时环境,导致启动时间长、内存占用高。而**原生镜像技术通过提前编译AOT将 Java 应用直接编译为本地机器码,无需 JVM 即可运行**,具有以下核心优势:

View File

@@ -1,3 +1,8 @@
---
title: SpringBoot Bean简介
date: 2025-11-29
---
# 一、Bean概念
## 1.1 定义
&emsp;&emsp;Spring bean是Spring框架在运行时管理的对象Bean是一个由Spring IoC容器实例化、组装和管理的对象。

View File

@@ -1,3 +1,8 @@
---
title: SpringBoot Starter原理
date: 2025-11-27
---
# 一、简介
&emsp;&emsp;Spring Boot Starter是一组预定义的依赖项集合旨在简化Maven或Gradle等构建工具中的依赖管理。每个Starter都包含了实现特定功能所需的库和组件以及相应的配置文件。开发者只需在项目中引入相应的Starter依赖即可快速搭建起具备该功能的项目骨架。
&emsp;&emsp;Starter=依赖+自动配置+配置文件

View File

@@ -1,3 +1,8 @@
---
title: Spring IOC简介
date: 2025-11-26
---
# 一、IOC
&emsp;&emsp;Spring框架的核心是IOC控制反转容器它负责管理应用程序中的对象称为Bean的创建、配置和组装。

View File

@@ -1,3 +1,8 @@
---
title: Spring MVC简介
date: 2025-11-27
---
# 一、基础概念
&emsp;&emsp;Spring MVCSpring Model-View-Controller是 Spring Framework 中的一部分,它是一个基于 **<font style="color:#DF2A3F;">请求驱动</font>** 的 Web 框架,主要用于构建 Web 应用程序,并且遵循 MVC模型-视图-控制器) 设计模式。它将 Web 应用的业务逻辑、用户界面和请求处理分离,使得代码更加模块化和可维护。

View File

@@ -1,3 +1,8 @@
---
title: 浏览器渲染全流程解析
date: 2025-12-13
---
# 一、网络请求阶段
1. DNS 解析

View File

@@ -1,3 +1,8 @@
---
title: JavaScript知识点整理
date: 2025-12-11
---
# JavaScript简介
## JavaScript 实现
&emsp;&emsp;完整的`JavaScript`实现包含以下几个部分:

View File

@@ -1,3 +1,8 @@
---
title: 前端包管理器
date: 2025-12-13
---
# npm
&emsp;&emsp;2010年随Node.js发布的npm首次为JavaScript引入了标准的包管理系统。其核心创新是**package.json文件**,通过语义化版本规范定义了依赖声明标准。这一设计解决了手动管理依赖时的版本混乱问题,为模块化开发提供了基础设施。

View File

@@ -1,3 +1,8 @@
---
title: 前端包管理器
date: 2025-12-13
---
# 一、Vite简介
&emsp;&emsp;Vite是新一代的前端构建工具在尤雨溪开发Vue3.0的时候诞生。类似于Webpack+ Webpack-dev-server。
&emsp;&emsp;其主要利用浏览器**ESModule特性**导入组织代码在服务器端按需编译返回完全跳过了打包这个概念服务器随起随用。生产中利用Rollup作为打包工具号称下一代的前端构建工具。

View File

@@ -1,3 +1,8 @@
---
title: Vue3架构原理
date: 2025-12-15 23:25
---
# 一、Vue3 整体架构图
```mermaid
graph TD

View File

@@ -1,3 +1,8 @@
---
title: Vue3-Common
date: 2025-12-15 23:25
---
# 一、依赖管理
&emsp;&emsp;本项目会传递安装的依赖有:

View File

@@ -29,3 +29,5 @@ features:
---
<Confetti />
<StatsChart />

View File

@@ -1,4 +1,5 @@
{
"type": "module",
"devDependencies": {
"canvas-confetti": "^1.9.4",
"medium-zoom": "^1.1.0",
@@ -11,5 +12,10 @@
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs",
"deploy": "npm run build && node deploy.js"
},
"dependencies": {
"echarts": "^6.0.0",
"tippy.js": "^6.3.7",
"vue3-calendar-heatmap": "^2.0.5"
}
}

54
pnpm-lock.yaml generated
View File

@@ -7,6 +7,16 @@ settings:
importers:
.:
dependencies:
echarts:
specifier: ^6.0.0
version: 6.0.0
tippy.js:
specifier: ^6.3.7
version: 6.3.7
vue3-calendar-heatmap:
specifier: ^2.0.5
version: 2.0.5(tippy.js@6.3.7)(vue@3.5.25)
devDependencies:
canvas-confetti:
specifier: ^1.9.4
@@ -322,6 +332,9 @@ packages:
'@mermaid-js/parser@0.6.3':
resolution: {integrity: sha512-lnjOhe7zyHjc+If7yT4zoedx2vo4sHaTmtkl1+or8BRTnCtDmcTpAjpzDSfCZrshM5bCoz0GyidzadJAH1xobA==}
'@popperjs/core@2.11.8':
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
'@rollup/rollup-android-arm-eabi@4.53.3':
resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
cpu: [arm]
@@ -922,6 +935,9 @@ packages:
dompurify@3.3.1:
resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==}
echarts@6.0.0:
resolution: {integrity: sha512-Tte/grDQRiETQP4xz3iZWSvoHrkCQtwqd6hs+mifXcjrCuo2iKWbajFObuLJVBlDIJlOzgQPd1hsaKt/3+OMkQ==}
emoji-regex-xs@1.0.0:
resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
@@ -1147,6 +1163,9 @@ packages:
resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
engines: {node: '>=18'}
tippy.js@6.3.7:
resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==}
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -1154,6 +1173,9 @@ packages:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
engines: {node: '>=6.10'}
tslib@2.3.0:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
ufo@1.6.1:
resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
@@ -1254,6 +1276,13 @@ packages:
vscode-uri@3.0.8:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
vue3-calendar-heatmap@2.0.5:
resolution: {integrity: sha512-qvveNQlTS5Aw7AvRLs0zOyu3uP5iGJlXJAnkrkG2ElDdyQ8H1TJhQ8rL702CROjAg16ezIveUY10nCO7lqZ25w==}
engines: {node: '>=16'}
peerDependencies:
tippy.js: ^6.3.7
vue: ^3.2.29
vue@3.5.25:
resolution: {integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==}
peerDependencies:
@@ -1262,6 +1291,9 @@ packages:
typescript:
optional: true
zrender@6.0.0:
resolution: {integrity: sha512-41dFXEEXuJpNecuUQq6JlbybmnHaqqpGlbH1yxnA5V9MMP4SbohSVZsJIwz+zdjQXSSlR1Vc34EgH1zxyTDvhg==}
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -1541,6 +1573,8 @@ snapshots:
dependencies:
langium: 3.3.1
'@popperjs/core@2.11.8': {}
'@rollup/rollup-android-arm-eabi@4.53.3':
optional: true
@@ -2168,6 +2202,11 @@ snapshots:
optionalDependencies:
'@types/trusted-types': 2.0.7
echarts@6.0.0:
dependencies:
tslib: 2.3.0
zrender: 6.0.0
emoji-regex-xs@1.0.0: {}
entities@4.5.0: {}
@@ -2465,10 +2504,16 @@ snapshots:
tinyexec@1.0.2: {}
tippy.js@6.3.7:
dependencies:
'@popperjs/core': 2.11.8
trim-lines@3.0.1: {}
ts-dedent@2.2.0: {}
tslib@2.3.0: {}
ufo@1.6.1: {}
undici-types@7.16.0:
@@ -2591,6 +2636,11 @@ snapshots:
vscode-uri@3.0.8: {}
vue3-calendar-heatmap@2.0.5(tippy.js@6.3.7)(vue@3.5.25):
dependencies:
tippy.js: 6.3.7
vue: 3.5.25
vue@3.5.25:
dependencies:
'@vue/compiler-dom': 3.5.25
@@ -2599,4 +2649,8 @@ snapshots:
'@vue/server-renderer': 3.5.25(vue@3.5.25)
'@vue/shared': 3.5.25
zrender@6.0.0:
dependencies:
tslib: 2.3.0
zwitch@2.0.4: {}