VuePress实现自动获取文章侧边栏目录功能

news2025/1/4 15:37:11

请添加图片描述

👨🏻‍💻 热爱摄影的程序员
👨🏻‍🎨 喜欢编码的设计师
🧕🏻 擅长设计的剪辑师
🧑🏻‍🏫 一位高冷无情的编码爱好者
大家好,我是 DevOps 工程师
欢迎分享 / 收藏 / 赞 / 在看!

【需求】

通常情况下,在使用 VuePress 时需要指定 sidebar 的内容,但是如果我们的文章很多,每次都需要手动指定,这样就很麻烦,所以我们可以通过自动获取文章侧边栏目录的方式来解决这个问题。

在这里插入图片描述

【解决】

docs/.vuepress/utils 新建如下代码,读取指定目录下的所有.md文件,并按照文件名从大到小排列,返回文件名数组:

const fs = require('fs');
const path = require('path');

/**
 * 读取指定目录下的所有.md文件,按照文件名从大到小排列
 * @param relativePath 相对路径
 * @returns {string[]|*[]} 文件名数组
 */
function findMdFiles(relativePath) {
    const directoryPath = path.join(process.cwd() + '/docs/', relativePath); // 使用process.cwd()来获取当前工作目录并构建目录路径

    try {
        const files = fs.readdirSync(directoryPath);

        // 筛选出以.md为后缀的文件名并排除README.md
        const mdFiles = files
            .filter((file) => file.endsWith('.md') && file !== 'README.md')
            .map((file) => path.parse(file).name);

        // 按照从大到小排序
        mdFiles.sort((a, b) => {
            const aNum = parseInt(a.slice(1));
            const bNum = parseInt(b.slice(1));
            return bNum - aNum;
        });
        console.log(mdFiles);

        return mdFiles;
    } catch (error) {
        console.error(`Error reading directory ${directoryPath}: ${error}`);
        return [];
    }
}

module.exports = {
    findMdFiles
};

这样,我们就可以在 docs/.vuepress/config.js 中使用了:

const path = require('./utils/path.js');

// 其他代码

'/aaa/': [
    {
        title: '编程干货',
        collapsable: true,
        children: path.findMdFiles('/aaa/')
    }
]

代码将获取 docs/aaa 目录下的所有 .md 文件,并按照文件名从大到小排列,然后将其作为侧边栏的目录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1072060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序之本地生活(九宫格)

文章目录 一.创建项目二.配置修改json三.编写WXML四.编写WXSS五.最终效果 一.创建项目 创建新的项目&#xff0c;名称为&#xff1a;本地生活 二.配置修改json 在app.json中删除其他页面 将index改为grid 自动生成新的文件 添加自己的轮播图片 源代码&#xff1a; <!--…

Spark Streaming与流处理

1.流处理 1.1 静态数据处理 在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中。应用程序根据需要查询数据或计算数据。这就是传统的静态数据处理架构。Hadoop 采用 HDFS 进行数据存储,采用 MapReduce 进行数据查询或分析,这就是典型的静态数据处理架构。…

c++视觉---使用轨迹条设置图片的对比度,亮度

轨迹条&#xff1a;cv::createTrackbar cv::createTrackbar 是OpenCV库中的一个函数&#xff0c;用于创建一个图形用户界面 (GUI) 中的滑动条控件&#xff0c;允许用户在应用程序运行时调整特定参数的值。这个函数的调用方式如下&#xff1a; int cv::createTrackbar(const s…

69名学员通过!9月份,誉天红帽RHCE学员再创佳绩!

9月份&#xff0c;誉天又有69名学员通过了RHCE认证&#xff0c;让我们和他们一起分享这份喜悦&#xff0c;继续努力前行&#xff01; ▲部分红帽学员留影▲ 学习并不是一场速度比赛&#xff0c;而是一场毅力与坚持的较量。每个人都有自己的学习节奏和方式&#xff0c;重要的是找…

【快速入门】JVM之类加载机制与Native

感慨&#xff1a; 如何定义一个合格的Java程序员&#xff0c;Java程序员要了解掌握哪些知识点&#xff0c;网上的面试题太多了&#xff0c;后端需要了解掌握的知识点太多太多了&#xff0c;Java基础、数据结构、异常、多线程、Spring、Spring boot、事务、算法、数据库&#xf…

python对excel数据表进行数据清洗

当拿到excel表&#xff0c;使用python对excel操作前&#xff0c;第一件事情是对excel表的数据进行数据清洗。 数值是否有空值&#xff0c;是否有重复的数据&#xff0c;把以上2个问题解决完成以后&#xff0c;才是对数据真正操作的开始。 1、使用pandans读取数据 2、判断exce…

安装hadoop,并配置hue

0、说明 对于大数据学习的初始阶段&#xff0c;我也曾尝试搭建相应的集群环境。通过搭建环境了解组件的一些功能、配置、原理。 在实际学习过程中&#xff0c;我更多的还是使用docker来快速搭建环境。 这里记录一下我搭建hadoop的过程。 1、下载hadoop 下载地址&#xff1a;…

2023年中国智慧医院市场现状及行业发展趋势分析[图]

自&#xff12;&#xff10;&#xff11;&#xff19;年开始&#xff0c;国家卫健委首次提出了智慧医院这一概念ꎬ并明确提出包含的三个方面&#xff0c;即:一是智慧医疗方面&#xff0c;主要面向医院所有医务人员使用者&#xff0c;以深层次提升医院信息化建设为目标ꎬ规范参照…

2023年中国连锁麻辣烫市场发展趋势分析:连锁麻辣烫行业规模将持续增长[图]

连锁麻辣烫即以连锁模式经营的麻辣烫。麻辣烫源自巴蜀地区&#xff0c;后经过市场从业者的改良推广&#xff0c;已经成为一种表现形式丰富多样的中式快餐。可根据连锁麻辣烫门店连锁模式的不同&#xff0c;将连锁麻辣烫门店分为直营连锁麻辣烫和加盟连锁麻辣烫。 连锁麻辣烫行…

无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?

一、前生今世 Prometheus 是完全开源的系统监控和告警工具包&#xff0c;它受 Google 内部的 BorgMon 监控系统启发&#xff0c;由前Google 工程师从 2012 年开始在 SoundCloud 以开源软件的形式进行研发&#xff0c;自此以后&#xff0c;许多公司和组织都采用了Prometheus 作为…

Docker学习笔记 - 极简极入门级

Docker学习笔记 - 极简极入门级 文章目录 Docker学习笔记 - 极简极入门级前言架构命令docker pulldocker pushdocker imagesdocker rmidocker rundocker stop/start/restartdocker rmdocker psdocker execdocker logsdocker save/loaddocker inspectdocker builddocker network…

2023年中国香樟木家具行业分析:定制化和个性化的需求不断增加[图]

香樟木是一种常见的木材&#xff0c;它在家具行业中被广泛使用。香樟木家具行业定义是指使用香樟木材料制造的家具产品的生产、销售和相关业务活动。 香樟木家具行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#xff09; 香樟木家具的生产主要集中在少数大型…

vue-slot插槽

作用&#xff1a;让父组件可以向子组件中任意位置插入html结构&#xff0c;也是组件通信方式的一种&#xff0c;适用于父组件》子组件 分类: 默认插槽、具名插槽、作用域插槽 定义子组件时使用slot组件&#xff0c;在使用子组件是可以决定是否插入具体的html代码 默认插槽 如…

Survey on Cooperative Perception in an Automotive Context 论文阅读

论文链接 Survey on Cooperative Perception in an Automotive Context 0. Abstract 本文就协同基础设施领域提供相关环境的调查回顾了感知中涉及的主要模块&#xff1a;定位&#xff0c;目标检测和跟踪&#xff0c;地图生成提供了协同感知的 SWOT 1. Intro 无人驾驶汽车的背…

万宾荣获深圳应博会“全球应急产业先锋奖”创始人发表峰会演讲

今年5月&#xff0c;住房和城乡建设部表示将全面启动的城市基础设施生命线安全工程工作&#xff0c;通过各类智能感知设备等数字化手段&#xff0c;及早发现和管控城市燃气、桥梁、供水、排水防涝等领域的风险隐患&#xff0c;切实提高城市安全保障能力、维护人民生命财产安全&…

基于SpringBoot的足球联赛管理系统

基于SpringBoot的足球联赛管理系统 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 首页 详情 管理员界面 摘要 基于Spring Boot的足球联赛管理系统代表了一种现代体育赛事管…

这15个海运提单的雷区 你知道吗?

海运提单中英文对照 海运提单主要项目填制说明 1、托运人(Shipper)&#xff1a;即与承运人签订运输契约&#xff0c;委托运输的货主&#xff0c;即发货人。在信用证支付方式下&#xff0c;一般以受益人为托运人;托收方式以托收的委托人为托运人。另外&#xff0c;根据《UCP500》…

【uniapp】subnvue组件数据更新视图未更新问题

背景 : 页面中的弹窗使用了subnvue来写, 根据数据依次展示一个一个的弹窗, 点击"关闭"按钮关闭当前弹窗, 显示下一个弹窗 问题 : 当点击关闭时( 使用的splice() ), 数据更新了 , 而视图没有更新, 实际上splice() 是不仅更新数据, 也可以更新视图的 解决 : this.$fo…

Linux配置JAVA_HOME

[rootlocalhost ~]# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy1.下载jdk 官网下载地址 2.将下载好的软件包解压到指定目录 tar -zxf /usr/local/software/jdk-…

雪莱的式子武汉2023(分析+快速幂)

传送门&#xff1a;登录—专业IT笔试面试备考平台_牛客网 思路&#xff1a; 对于每一种质因子&#xff0c;如果他在μ&#xff08;&#xff09;函数中出现两次&#xff0c;那这种情况对答案贡献为0&#xff0c;所以我们可以只讨论每一种因子出现0&#xff0c;1次的情况。 对于…