为什么人家的开源项目文档如此炫酷?原来用的是这款神器

news2025/1/22 13:07:21

VuePress简介

VuePress是Vue驱动的静态网站生成器。对比我们的Docsify动态生成网站,对SEO更加友好。

使用VuePress具有如下优点:

  • 使用Markdown来写文章,程序员写起来顺手,配置网站非常简洁。

  • 我们可以在Markdown中使用Vue组件,如果你熟悉Vue的话会非常方便。

  • 打包网站时会为每个页面预渲染生成静态的HTML,性能好,也有利于SEO。

Vdoing主题

一般我们使用VuePress搭建网站的时候,都会选择一个主题。这里选择的是vuepress-theme-vdoing,一款简洁高效的知识管理&博客主题,用来搭建文档网站绰绰有余。

学了技术老忘怎么破?用Vdoing搭建一个知识库试试!它能帮助我们更好地管理知识,并能够快速地把遗忘的知识点找回来。

使用Vdoing主题具有如下优点:

  • 知识管理:由于该主题具有目录、分类、标签等功能,可以方便地整合结构化或碎片化的内容。

  • 简洁高效:以 Markdown 为中心的项目结构,内置自动化工具,以更少的配置完成更多的事。

  • 沉浸式阅读:专为阅读设计的UI,配合多种颜色模式、可关闭的侧边栏和导航栏,带给你一种沉浸式阅读体验。

效果演示

我们先来看下成品效果,有三种不同模式可供选择,是不是够炫酷!

搭建

通过Vdoing搭建网站非常简单,就算你对Vue不熟悉也没关系。

  • 首先我们需要去Vdoing的官网下载项目,下载地址:https://github.com/xugaoyi/vuepress-theme-vdoing

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 下载完成后导入IDEA中,由于是Vue项目,导入成功后需要使用如下命令来安装依赖,之后以dev模式运行;

 
 

# 安装 npm install # 运行 npm run dev

  • 运行成功后,随便找个文章进去体验下,界面还是挺不错的,访问地址:http://localhost:8080/

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 还支持主题切换,比如切换到深色模式。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

配置

由于Vdoing本身就是个完整的网站了,里面有很多我们不需要的文章和配置,所以我们得替换这些文章并自定义这些配置。

  • 我们先来看下我自定义后的首页效果,这个主题还是非常简洁的,看起来挺舒服;

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 项目文件基本都在docs目录下,我们来看下这些文件的作用;

 
 

docs │ index.md -- 首页配置 ├─.vuepress -- 用于存放全局的配置、组件、静态资源等 │ │ config.js -- 配置文件的入口文件 │ │ enhanceApp.js -- 客户端应用的增强 │ ├─config │ │ head.js -- 注入到页面<head>中的配置 │ │ htmlModules.js -- 插入自定义html模块 │ │ nav.js -- 顶部导航栏配置 │ │ plugins.js -- 插件配置 │ │ themeConfig.js -- 主题配置 │ ├─public -- 静态资源目录 │ │ └─img -- 用于存放图片 │ ├─styles │ │ palette.styl -- 主题演示配置 │ └─<结构化目录> ├─@pages --自动生成的文件夹 │ archivesPage.md -- 归档页 │ categoriesPage.md -- 分类页 │ tagsPage.md -- 标签页 ├─images -- 可以用来存放自己的图片 └─_posts -- 专门存放碎片化博客文章的文件夹,不会自动生成目录

  • 大家都用过SpringBoot,有约定优于配置的说法,Vdoing也有这种说法,如果我们想要根据目录结构自动生成文章目录的话,需要给目录和文件添加序号,比如下面的目录;

编辑

添加图片注释,不超过 140 字(可选)

  • 在此目录结构下,一级目录被称为专栏,二级目录为专栏内容,专栏之间是相互独立的,上面的目录结构将生成如下结构的侧边栏,同时也会生成右侧的大纲栏;

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 如果你还想给专栏添加个目录页的话,可以在00.目录页文件夹中添加02.mall学习教程.md作为目录,目录页内容如下,permalink可以指定目录页的永久路径;

 
 

--- pageComponent: name: Catalogue data: key: 02.mall学习教程 imgUrl: /img/ui.png description: mall学习教程,架构、业务、技术要点全方位解析。 title: mall学习教程 date: 2020-03-11 21:50:54 permalink: /mall-learning sidebar: false article: false comment: false editLink: false ---

  • 接下来通过如下地址就可以访问目录页了:http://localhost:8080/mall-learning/

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 当然你也可以修改导航栏配置nav.js,这样会访问起来会方便许多;

 
 

module.exports = [ { text: '首页', link: '/' }, { text: 'mall学习教程', link: '/mall-learning/', items: [ { text: '序章', link: '/pages/72bed2/' }, { text: '架构篇', link: '/pages/c68875/' }, { text: '业务篇', link: '/pages/c981c1/' }, { text: '技术要点篇', link: '/pages/fab7d9/' }, { text: '部署篇', link: '/pages/db2d1e/' }, ], } ]

  • 添加成功后导航栏显示效果如下,点击导航栏即可跳转到该目录;

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 其实你还可以在首页index.md中通过添加feature来实现快速访问,这里我们创建了三个feature;

 
 

--- home: true # heroImage: /img/web.png heroText: macrozheng's blog tagline: Java后端技术博客,积跬步以至千里,致敬每个爱学习的你。 features: # 可选的 - title: mall学习教程 details: mall学习教程,架构、业务、技术要点全方位解析。 link: /mall-learning/ imgUrl: /img/ui.png - title: SpringCloud学习教程 details: 一套涵盖大部分核心组件使用的Spring Cloud教程,包括Spring Cloud Alibaba及分布式事务Seata。 link: /springcloud-learning/ imgUrl: /img/other.png - title: K8S学习教程 details: 实实在在的K8S实战教程,专为Java方向人群打造! link: /springcloud-learning/ # 可选 imgUrl: /img/web.png # 可选 ---

  • 首页显示效果如下;

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 每次我们创建文章的Markdown文件时,会自动生成front matter,比如下面这个格式;

 
 

--- title: mall整合SpringBoot+MyBatis搭建基本骨架 date: 2021-08-19 16:30:11 permalink: /pages/c68875/ categories: - mall学习教程 - 架构篇 tags: - SpringBoot - MyBatis ---

  • 下面分别介绍下这些属性的作用:

  • title:文章标题,默认为文件名称;

  • date:文章日期,默认为文件创建日期;

  • permalink:文件访问永久链接,可以自行修改;

  • categories:文章的分类,根据目录会自动生成;

  • tags:文章标签,方便碎片化文章的查找。

  • 如果你仔细看下文章列表的话,可以发现有的文章会显示摘要,而有的不会显示,我们可以通过<!-- more -->注释来控制摘要的显示,该注释之前内容均会作为摘要来显示;

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 文章列表是否显示摘要对比如下;

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • 如果你想修改文章作者信息、侧边栏是否折叠、社交信息、页面底部版权信息等信息的话,可以修改主题配置文件themeConfig.js;

 
 

// 主题配置 module.exports = { nav, sidebarDepth: 2, // 侧边栏显示深度,默认1,最大2(显示到h3标题) logo: '/img/avatar.png', // 导航栏logo repo: 'macrozheng', // 导航栏右侧生成Github链接 searchMaxSuggestions: 10, // 搜索结果显示最大数 lastUpdated: '上次更新', // 开启更新时间,并配置前缀文字 string | boolean (取值为git提交时间) docsDir: 'docs', // 编辑的文件夹 editLinks: false, // 启用编辑 editLinkText: '编辑', sidebar: { mode: 'structuring', collapsable: false}, // 侧边栏 'structuring' | { mode: 'structuring', collapsable: Boolean} | 'auto' | 自定义 温馨提示:目录页数据依赖于结构化的侧边栏数据,如果你不设置为'structuring',将无法使用目录页 author: { // 文章默认的作者信息,可在md文件中单独配置此信息 String | {name: String, link: String} name: 'macrozheng', // 必需 link: 'https://github.com/macrozheng', // 可选的 }, blogger: { // 博主信息,显示在首页侧边栏 avatar: '/img/avatar.png', name: 'macrozheng', slogan: '这家伙很懒,什么都没写...', }, social: { // 社交图标,显示于博主信息栏和页脚栏 // iconfontCssFile: '//at.alicdn.com/t/font_1678482_u4nrnp8xp6g.css', // 可选,阿里图标库在线css文件地址,对于主题没有的图标可自由添加 icons: [ { iconClass: 'icon-github', title: 'GitHub', link: 'https://github.com/macrozheng', }, { iconClass: 'icon-gitee', title: 'Gitee', link: 'https://gitee.com/macrozheng', }, { iconClass: 'icon-juejin', title: '掘金', link: 'https://juejin.cn/user/958429871749192', } ], }, footer: { // 页脚信息 createYear: 2019, // 博客创建年份 copyrightInfo: 'marcozheng | <a href="https://github.com/xugaoyi/vuepress-theme-vdoing/blob/master/LICENSE" target="_blank">MIT License</a>', // 博客版权信息,支持a标签 }, htmlModules // 插入hmtl(广告)模块 }

  • 有时候我们想在每篇文章头部和底部加点推广信息,比如推荐下自己的公众号什么的,可以修改htmlModules.js文件的pageT和pageB属性;

 
 

module.exports = { pageTshowMode:'article', pageBshowMode:'article', pageT: `<p>学习不走弯路,<a href="#%E5%85%AC%E4%BC%97%E5%8F%B7">关注公众号</a> 回复「学习路线」,获取mall项目专属学习路线!</p>`, pageB: `<h2 id="公众号"><a href="#公众号" class="header-anchor">#</a> 公众号</h2><p><img src="http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/banner/qrcode_for_macrozheng_258.jpg" alt="公众号图片" style="cursor: zoom-in;"></p>`, }

  • 接下来你就会发现,每篇文章头部和底部都被添加了指定内容,比每篇文章重复写省时多了!

编辑切换为居中

添加图片注释,不超过 140 字(可选)

  • Vdoing添加了很多插件,有些你用不上,可以通过修改plugins.js来禁用,比如禁用下百度统计插件,第二个参数改为false就行了;

 
 

// 插件配置 module.exports = [ [ 'vuepress-plugin-baidu-tongji', // 百度统计 false, //禁用 { hm: 'xxx', }, ], ]

  • Vdoing浅色主题默认代码块主题也是浅色主题,我们可以通过修改palette.styl文件来改成深色主题;

 
 

// 浅色模式 .theme-mode-light // 代码块浅色主题 //--codeBg: #f6f6f6 //--codeColor: #525252 //codeThemeLight() // 代码块深色主题 --codeBg: #252526 --codeColor: #fff codeThemeDark()

  • 我们放在docs一级目录下的带序号的专栏默认会生成目录,如果我们有些碎片化的文章不想生成结构化目录的话,可以放在_posts目录下;

编辑

添加图片注释,不超过 140 字(可选)

  • Linux命令这篇文章就没有生成结构化目录,只是使用文章中的二级标题生成了个目录。

编辑切换为居中

添加图片注释,不超过 140 字(可选)

部署

VuePress生成网站也非常简单,一个命令完成打包,然后放置到Nginx的html目录下即可。

  • 在命令行使用npm run build命令可以将项目打包成静态文件,输出文件目录为docs/.vuepress/dist;

编辑

添加图片注释,不超过 140 字(可选)

  • 接下来把dist目录下的所有文件复制到Nginx的html目录下即可完成部署,部署后显示内容如下。

总结

使用VuePress+Vdoing来搭建文档网站不仅炫酷而且功能强大!对比Docsify的动态生成文档,VuePress生成静态页面性能更好,同时对SEO也更友好。如果你只想搭建简单的单项目文档的话,Docsify基本上也够用了。如果你想搭建多项目文档,或者博客网站的话,还是推荐你使用VuePress的。

                                            资源获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻

 精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待

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

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

相关文章

所谓工作能力强,其实就这五点

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; #mermaid-svg-YapmQUqJ0V32EFv6 {font-family:"trebuchet ms",ve…

用三台云服务器搭建hadoop完全分布式集群

用三台云服务器搭建hadoop完全分布式集群一、硬件准备&#xff08;一&#xff09;集群配置&#xff08;二&#xff09;集群规划&#xff08;三&#xff09;Hadoop、Zookeeper、Java、CentOS版本二、基础环境配置&#xff08;一&#xff09;关闭防火墙&#xff08;二&#xff09…

[附源码]Python计算机毕业设计SSM基于Java的在线点餐系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

12.15

JSONP 1) JSONP 是什么 JSONP(JSON with Padding)&#xff0c;只支持 get 请求。 2) JSONP 怎么工作的&#xff1f; 在网页有一些标签天生具有跨域能力&#xff0c;比如&#xff1a;img link iframe script。 JSONP 就是利用 script 标签的跨域能力来发送请求的。 3) JSONP …

为什么你的接口性能差,实际原因就在这里?

一、前言这篇文章咱们来聊一下&#xff0c;百亿级别的海量数据场景下还要支撑每秒十万级别的高并发查询&#xff0c;这个架构该如何演进和设计&#xff1f;咱们先来看看目前系统已经演进到了什么样的架构&#xff0c;大家看看下面的图&#xff1a;首先回顾一下&#xff0c;整个…

三、Node.js模块化基础 2.0

在Node.js中&#xff0c;模块分为核心&#xff08;原生&#xff09;模块和文件&#xff08;自定义&#xff09;模块&#xff0c;核心模块就是Node.js自带的模块&#xff0c;而自定义模块则是开发者自定义的模块&#xff1b; 核心模块 核心模块有 os&#xff0c;fs&#xff0c;…

发送给Java应用程序的所有参数都必须是字符串吗?

问&#xff1a;发送给Java应用程序的所有参数都必须是字符串吗&#xff1f; 答&#xff1a; 应用程序在运行时&#xff0c;Java将所有参数存储为字符串。要使用整型或其他非字符串参数&#xff0c;必须将其进行转换&#xff0c; 问&#xff1a;既然applet是在Web页面中运行&…

大一作业HTML网页作业:中华传统文化题材网页设计5页(纯html+css实现)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

HTML期末作业,基于html实现中国脸谱传统文化网站设计(5个页面)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

Scrapy_redis分布式原理

今天分享一下Scrapy_redis分布式原理&#xff1a; 1 scrapy_redis是什么 Scrapy_redis &#xff1a; Redis-based components for Scrapy. Github地址&#xff1a;<https://github.com/rmax/scrapy-redis> 在这个地址中存在三个demo&#xff0c;后续我们对scrapy_redi…

大学生简单环保环境静态HTML网页设计作品 DIV布局环境介绍网页模板代码 DW学生环境网站制作成品下载 HTML5期末大作业

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

2022_TIP_DSNet

Boosting RGB-D Saliency Detection by Leveraging Unlabeled RGB Images 通过利用未标记的RGB图像来增强rgb-d显着性检测 1. 动机 1) 用于监督学习的像素级注释既昂贵又耗时。 2) 与RGB图像相比&#xff0c;成对的rgb-d图像更难以收集。 2. 解决方法 提出 Dual-Semi RG…

[附源码]Python计算机毕业设计Django景区直通车服务系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

智能人机交互

前言 随着移动机器人越来越多地走向实 际应用&#xff0c;需要提高机器人与人类之 间的协同水平&#xff0c;实现机器人与人类的共融。 一、人机交互的三个级别 二、火星车的遥操作控制 火星车的遥操作控制&#xff08;超大时延&#xff09;&#xff1a;地面团队将命令序列发至…

Linux | 网络概念理解 | 对网络的初识

文章目录重新看待计算机体系结构软件分层的思想网络中的分层协议的理解局域网的理解MAC地址 && IP地址报头的作用端口号&#xff08;port&#xff09;重新看待计算机体系结构 计算机由硬件组成&#xff0c;而不同硬件之间要怎么通信&#xff0c;或者说要怎么进行数据的…

STM32F4的串口烧录问题

前言&#xff1a;以前总是画F1的板子&#xff0c;第一次接触F4的芯片&#xff0c;画板子时串口接在了PB6、PB7上&#xff0c;导致烧录程序、检测芯片失败的情况。其原因是由于F1的USART1对应(PA9\PA10)&#xff0c;而F4的USART1则对应了(PA9\PA10)和(PB6\PB7)。两个对应搞得不知…

linux安装jdk教程(手动安装/yum安装) 保姆级教程

yum安装jdk方式&#xff1a; 1、查询要安装jdk的版本 命令&#xff1a;yum -y list java* 2、选择你需要安装的版本号 命令&#xff1a;yum install -y 你选择的版本号 ​ 3、 查询jdk版本 命令&#xff1a;java -version (有版本证明安装成功了......) 手动安装方式&#…

Kibana:运用 transform 来实现服务质量目标(SLO)的可视化

Kibana 是一个有用的工具&#xff0c;用于监控应用程序和服务以确保它们在指定的服务级别目标内运行。 服务质量指标 (SLI) 是服务的可衡量方面&#xff0c;例如错误代码和延迟。 服务质量目标 (SLO) 定义应用程序或服务预期如何按照 SLI 衡量的方式执行&#xff0c;并在某种程…

《集体智慧编程》笔记(3 / 12):发现群组

Discovering Groups 文章目录监督学习和无监督学习监督学习无监督学习单词向量对博客用户进行分类对订阅源中的单词进行计数分级聚类绘制树状图列聚类K-均值聚类针对偏好的聚类获取数据和准备数据BeautifulSoup收集来自Zebo的结果定义距离度量标准对结果进行聚类以二维形式展现…

二、导论——可解释性机器学习(DataWhale组队学习)

目录引言ZFNet的网络结构可视化反卷积反池化反激活反卷积训练细节特征可视化特征演化特征不变性局部遮挡测试敏感性分析相关性分析消融实验宽度影响深度影响迁移学习能力有效性分析总结引言 纽约大学ZFNet&#xff0c;2013年ImageNet图像分类竞赛冠军模型。对AlexNet进行改进的…