新增:《初识MyBatis | 快速入门》

This commit is contained in:
2022-07-24 22:35:21 +08:00
parent c4b71a0be7
commit 6f70680fe3
12 changed files with 467 additions and 14 deletions

View File

@@ -16,11 +16,18 @@ export const nav: DefaultTheme.Config['nav'] = [
link: '/solutions/index',
activeMatch: '/solutions/'
},
{
text: '我的小课',
items: [
{ text: 'MyBatis快速入门', link: '/courses/mybatis/index' }
],
activeMatch: '/courses/'
},
{
text: '关于',
items: [
{ text: '关于知识库', link: '/about/index' },
{ text: '关于笔者', link: '/about/me' }
{ text: '关于', link: '/about/me' }
],
activeMatch: '/about/'
}

View File

@@ -2,18 +2,21 @@ import DefaultTheme from 'vitepress/theme'
import { sync } from "fast-glob"
export const sidebar: DefaultTheme.Config['sidebar'] = {
'/issues/': getItems("issues"),
'/fragments/': getItems("fragments"),
'/solutions/': getItems("solutions")
'/issues/': getItemsByDate("issues"),
'/fragments/': getItemsByDate("fragments"),
'/solutions/': getItemsByDate("solutions"),
'/courses/mybatis/': getItems("courses/mybatis")
}
/**
* 获取侧边栏分组及分组下标题
* 根据 年/月/日.xxmd 的目录格式, 获取侧边栏分组及分组下标题
*
* /repos/issues/2022/07/20.xxx.md
*
* @param path 扫描基础路径
* @returns {DefaultTheme.SidebarGroup[]}
*/
function getItems (path: string) {
function getItemsByDate (path: string) {
// 侧边栏分组数组
let groups: DefaultTheme.SidebarGroup[] = []
// 侧边栏分组下标题数组
@@ -22,23 +25,28 @@ function getItems (path: string) {
// 1.获取所有年份目录
sync(`repos/${path}/*`, {
onlyDirectories: true,
objectMode: true,
objectMode: true
}).forEach(({ name }) => {
let year = name
for (let i = 1; i <= 12; i++) {
let month = i < 10 ? `0${i}` : i
// 2.获取所有月份目录下的文章
// 2.获取所有月份目录
sync(`repos/${path}/${year}/*`, {
onlyDirectories: true,
objectMode: true
}).forEach(({ name }) => {
let month = name
// 3.获取月份目录下的所有文章
sync(`repos/${path}/${year}/${month}/*`, {
objectMode: true,
onlyFiles: true,
objectMode: true
}).forEach(({ name }) => {
// 向前追加标题
items.unshift({
text: name,
link: `/${path}/${year}/${month}/${name}`,
link: `/${path}/${year}/${month}/${name}`
})
})
// 3.向前追加分组
// 4.向前追加分组
if (items.length > 0) {
// 去除标题名中的日期前缀和扩展名
for (let i = 0; i < items.length; i++) {
@@ -53,9 +61,65 @@ function getItems (path: string) {
})
}
// 4.清空侧边栏分组下标题数组
// 5.清空侧边栏分组下标题数组
items = []
})
})
// 6.将第一个侧边栏分组的标题展开
groups[0].collapsed = false
return groups
}
/**
* 根据 分组/序号.xxmd 的目录格式, 获取侧边栏分组及分组下标题
*
* /repos/courses/mybatis/MyBatis基础/20.xxx.md
*
* @param path 扫描基础路径
* @returns {DefaultTheme.SidebarGroup[]}
*/
function getItems (path: string) {
// 侧边栏分组数组
let groups: DefaultTheme.SidebarGroup[] = []
// 侧边栏分组下标题数组
let items: DefaultTheme.SidebarItem[] = []
// 1.获取所有分组目录
sync(`repos/${path}/*`, {
onlyDirectories: true,
objectMode: true
}).forEach(({ name }) => {
let groupName = name
// 2.获取分组下的所有文章
sync(`repos/${path}/${groupName}/*`, {
onlyFiles: true,
objectMode: true
}).forEach(({ name }) => {
// 向前追加标题
items.push({
text: name,
link: `/${path}/${groupName}/${name}`
})
})
// 3.向前追加到分组
if (items.length > 0) {
// 去除标题名中的日期前缀和扩展名
for (let i = 0; i < items.length; i++) {
let text = items[i].text
items[i].text = text.replace('.md', '').substring(text.indexOf('.') + 1)
}
groups.push({
text: `${groupName.substring(groupName.indexOf('.') + 1)} (${items.length}篇)`,
collapsible: true,
collapsed: true,
items: items
})
}
// 4.清空侧边栏分组下标题数组
items = []
})
// 5.将第一个侧边栏分组的标题展开