springboot基于docsify 实现随身文档
作者:Kindear 发布时间:2023-04-25 04:52:23
需求分析
文档可以和项目一起进行版本管理
文档可以在线访问
文档可以与springboot项目集成,不需要分开部署
MarkDown支持
文档跟随,打包
jar
也可以访问
技术选型
对于网上已有的方案,大致分为如下几种
将文档部署在
resource
静态资源目录下,用模板渲染访问。[1][1]分离部署,打包
jar
后还需要单独上传静态资源文档内容并部署。
最终选定的技术方案如下
工具 | 用途 | 官网 |
---|---|---|
Typora | 文档编写 | https://typoraio.cn/ |
Docsify | 文档部署 | https://docsify.js.org/#/ |
Hutool | 服务集成 | https://www.hutool.cn/docs/#/ |
工具介绍
Typora
Typora 是一款功能非常强大的 MarkDown编写工具,采用所见即所得的编辑方式,实现了即时预览的功能,Latex
公式支持,具体请查看官网,目前只有平替,没有超越的MarkDown编写工具,对于本方案来讲,支持剪切图片直接保存到相对路径中,方便访问。同时也支持配置图床,需要使用PicGo
搭建服务。
Docsify
docsify 可以自动地将 Markdown 中的标题生成目录,快速搭建一个小型的文档网站,整个页面的配色和布局也十分舒适,让阅读体验在不知不觉中提升了好几个档次。
和 Gitbook 不同,docsify 不会生成静态的 HTML 文件,它会智能地加载和解析 Markdown 文件,这就避免了 HTML 文件对整个文档库的“污染”。
还支持丰富的自定义样式。
Hutool
hutool 是一个非常好用的开发梭子,这种有大量用户使用的工具类,绝对比自己维护的轮子要稳定的多,所以开发选hutool
是非常OK的一个选择。
我们使用的是hutool
工具的一个子包 - SimpleServer
Oracle JDK提供了一个简单的Http服务端类,叫做HttpServer
,当然它是sun的私有包,位于com.sun.net.httpserver下,必须引入rt.jar才能使用,Hutool基于此封装了SimpleServer
,用于在不引入Tomcat、Jetty等容器的情况下,实现简单的Http请求处理。
功能实现
1. 初始化文档
在 resources
目录下,或者项目根目录下执行如下命令,在项目根目录执行,需要对 maven 打包进行额外的配置,推荐在 resources
目录下执行。
docsify init .docs
docsify init .docs
2. 配置简易服务器
新建DocConfig.java
import cn.hutool.http.HttpUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import java.io.File;
@Component
public class DocConfig {
@Bean
public void InitDoc(){
String rootPath = System.getProperty("user.dir");
HttpUtil.createServer(8888)
// 设置默认根目录 -- resources目录下新建根据对应路径修改,目录分隔符用 File.separator 保证Win/Linux 兼容
.setRoot(rootPath+ File.separator+".docs")
.start();
}
}
3. 访问
当启动 springboot 项目时,访问 localhost:8888
即可访问对应文档
来源:https://www.cnblogs.com/masterchd/p/16671139.html


猜你喜欢
- 本文实例讲述了C#中WPF使用多线程调用窗体组件的方法。分享给大家供大家参考。具体如下:Thread thread=new Thread(n
- 一 引入考虑实现一种三轴机器人控件。三轴机器人用来将某种工件从一个位置运送到另一个位置。其X轴为手臂轴,可以正向和反向运动,它处于末端,直接
- SpringBoot下载Excel文件文件损坏我把模板文件放在了resources目录下maven插件打包项目的时候,默认会压缩resour
- 先来看一个名为Message的类在这个类中有一段包含在companion object中的代码,需要说一下的是,Kotlin的cl
- 附加依赖项属性是一个属性本来不属于对象自己,但是某些特定场景其他的对象要使用该对象在这种场景下的值。这个值只在这个场景下使用。基于这个需求设
- 1. 创建自定义 * 类并实现 HandlerInterceptor 接口package com.xgf.online_mall.inter
- Android 遍历SDCARD的文件夹并显示目录信息private String mResult = new String(); priv
- 0、线程的本质线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入C
- 本文实例讲述了C#虚函数用法。分享给大家供大家参考。具体如下:using System;namespace Test2 { cl
- 在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来
- Java 官网对Looper对象的说明:public class Looperextends ObjectClass used to run
- 在上一篇文章中,我为大家介绍了《5种创建文件并写入文件数据的方法》,本节我们为大家来介绍6种从文件中读取数据的方法.另外为了方便大家理解,我
- 一、说明标准库提供了许多容器,它们有一个共同点:它们是同类的。也就是说,标准库中的容器只能存储一种类型的元素。 std::vector<
- @[toc]在之前的文章中松哥和小伙伴们聊过,正在执行的流程信息是保存在以 ACT_RU_ 为前缀的表中,执行完毕的流程
- 在Android中通过ListView显示SD卡中的文件列表一共有两种方法,一是:通过继承ListActivity显示;二是:利用BaseA
- 本文以实例形式展示了基于C#实现Windows服务状态启动和停止服务的方法。非常实用。分享给大家供大家参考之用。具体方法如下:首先先引用:S
- 需求某航空公司物流单信息查询,是一个post请求。通过后台模拟POST HTTP请求发现无法获取页面数据,通过查看航空公司网站后,发现网站使
- 数据的类型介绍类型的基本归类在写数据类型的介绍之前,我们首先来简单介绍下 release版本与debug版本之间的在内存上的区别:我们先将下
- 本文实例为大家分享了JAVA实现人脸识别的具体代码,供大家参考,具体内容如下官方下载 安装文件 ,以win7为例,下载opencv-2.4.
- 前言Camera2是Android新的Camera框架,整体来讲Camera2为应用程序提供了许多标准接口,使更多的功能可以通过参数控制;但