本文主要和大家分享php之markdown文档管理工具的实现代码,希望能帮助到大家。

主要目标:

1.可以多人编辑

2.可以在浏览器中查看

3.有一个可以折叠的目录

4.支持多级目录

5.支持markdown

6.快, 方便

工作后一直在从事PHP开发, 从以前的大包大揽到现在的退居服务端写接口, 当中接触过几个的接口文档管理工具或系统, 简单描述下:showdoc, 功能全面而且简洁, 有用户,权限管理功能, 支持markdown, 支持导出word, 有多种文档模板, 目录支持两级折叠

confluence, 功能强大(权限管理, 邮件提醒, 全文搜索, 插件管理等), 重, 收费的一个文档管理系统

swagger, 需要在代码中写大量的注释去配合

readmine, 功能丰富类似confluence, 它的文档是以txt保存的, 可以追溯变更, 可以全文搜索, 但是写文档有点痛苦, 适合任务/bug跟踪管理等

gitbook, nodejs安装, 支持markdown, 支持npm插件, 左侧的可折叠的目录树就需要装插件, 也可以装搜索插件, 目录是单独的markdown文件, 我使用的时候感觉从md到HTML编译太慢(600+的文档, 要编译25分钟多, 如果有增量编译或提高编译速度的插件还请各位赐教

解决方法:结合git就可以实现, 正好也可以利用git的权限管理功能

需要将markdown编译成HTML文件部署到内网

因为要在浏览器中查看, 这里最终选择了接入简单, 界面清爽, 无依赖的dtree.js (不依赖jQuery)

这个功能用了树的后根序遍历算法实现了对多级文件的读取(没有用递归, 担心写着写着把自己绕进去), 正好dtree.js 也支持多级目录折叠

这里我最终选择了segmentfault官方出的PHP编译工具类(因为他们已经参考优化了很多类似的PHP类,感谢~)

快的话, 编译600多个文件, PHP用时2s左右,可以接受, 而且支持增量编译; 方便的话, 主要体现在目录是自动生成的, 不需要单独在编写目录

其中遇到的问题:

增量编译

刚开始判断一个md文件是否需要编译成HTML, 是拿md文件的创建时间和最后修改时间做对比进行判断的,

但是后来发现, 一些复制来的, 重命名的文件用这个方法就不起作用.

最后使用了一个中间文件, 去记录本次编译的文件的时间, 再跟 max(创建时间, 最后修改时间)对比判断是否需要编译

删除多余文件

后续使用过程中发现, 有些md文档被删除了, 但是没有自动删除最终编译后的文件,

因此, 在编译时会对md文件和最后的HTML文件坐一个差集, 删掉那些多余的HTML文件

整合dtree.js

首先, dtree.js需要一定要求的json数据才能显示目录和进行展开和折叠的交互

还有, dtree.js字体比较小, 他的图片,样式,脚本文件都是相对路径, 我这里对路径做了相应修改, 使之改为基于当前域名的绝对路径, 这样部署到不同的域名下是不用修改dtree.js代码的层级目录的

组装, 美化HTML

组装是事先写好HTML的头部, 底部, 侧边栏等的HTML代码, 然后把这些内容拼接到编译后的内容前后, 最后再放到相应的文件夹中去

美化, 这个主要是因为segmentfault官方出的编译工具并没有对HTML元素(例如, table, code)添加样式, 我这里找到github的相关css样式进行了美化

支持多级目录

这个也是耗费了我大量脑细胞写出来的, 大学的时候写动态哈夫曼编码的时候写过一遍树的遍历了,

本以为驾轻就熟, 谁知道折腾到夜里3点多才最终写好, 这个功能也算是核心组件之一了吧。

相关推荐:

php编写文件管理工具,php之markdown文档管理工具的实现代码相关推荐

  1. markdown文档管理工具

    介绍 电脑中存了很多markdown文档,为了管理这些文档,特写了这个md管理工具. 我的想法是,把现有的markdown文件复制到指定文件夹中,自动生成markdown的网页,不仅可以在自己电脑上运 ...

  2. 文档管理工具(支持http、websocket、富文本、markdown)

    真正的大师,永远都怀着一颗学徒的心! 一.项目简介 文档管理工具(支持http.websocket.富文本.markdown) 二.实现功能 支持markdown语法 支持JSON测试 支持TXT测试 ...

  3. 在线文档管理工具都有什么值得推荐的?

    在线文档管理工具是现代企业和个人必备的工具之一,它们可以帮助用户方便地创建.编辑.共享和管理文档. 几个值得推荐的在线文档管理工具: Google 文档:Google 文档是一款免费的在线文档工具,它 ...

  4. Yep for Mac:专为Mac用户所设计的文档管理工具

    Yep for mac是一款实用的文件管理工具,相当于各种文件(PDF.DOC.Excel.PPT等)的一个iPhoto.Yep for mac能自动组织整理PDF.iWork.office等文件,归 ...

  5. 接口文档管理工具showDoc

    随着互联网的发展,前后端分离已成为互联网项目开发的业界标准使用方式. 由此而产生的前端开发工程师和后端开发工程师的沟通效率问题. 推荐一个应此而生的文档管理工具---showdoc showdoc官网 ...

  6. 盘点 8 款好用的 API 接口文档管理工具

    随着互联网的普及和发展,API 接口已经无处不在.它已经在 Web 应用程序.移动应用程序.云计算.物联网.人工智能等领域中得到广泛应用. 例如,在金融行业中,API 接口可以被用于构建支付服务.银行 ...

  7. 云效知识库 Thoughts,企业文档管理工具

    云效知识库 Thoughts,企业文档管理工具,云效知识库是一款企业 知识管理 工具,通过独立的知识库空间,结构化地组织在线协作文档,实现企业知识的积累和沉淀,促进知识的高度复用和流通. 云效知识库是 ...

  8. API文档管理工具折射出的技术视野

    什么是技术视野 网上看到不少关于如何提升技术视野的讨论,但却没有人给出定义,到底什么是技术视野? 所谓技术视野,就是看问题时所能切换的不同角(维)度. 下面就以API管理工具(以下简称"管理 ...

  9. 基于WPF重复造轮子,写一款数据库文档管理工具(一)

    项目背景 公司业务历史悠久且复杂,数据库的表更是多而繁杂,每次基于老业务做功能开发都需要去翻以前的表和业务代码.需要理解旧的表的用途以及包含的字段的含义,表少还好说,但是表一多这就很浪费时间,而且留下 ...

最新文章

  1. 深度神经网络对基于EEG的情绪识别的关键频带和通道的研究
  2. mega_[MEGA DEAL] 2018 Essential JavaScript编码捆绑包(96%折扣)
  3. Windows核心编程 第27章 硬件输入模型和局部输入状态
  4. Android后台杀死系列之三:LowMemoryKiller原理(4.3-6.0)
  5. EBS业务学习之应收管理
  6. 【LeetCode】4月2日打卡-Day18-矩阵操作
  7. java 2d绘图 stroke_Java标准教程:Java 2D绘图--第4章使用Text
  8. 字符串10进制、16进制、ASSIC的互转
  9. Windows Phone
  10. 2021了,你还不能玩转js正则表达式?
  11. C.One Piece
  12. 蔡奇视察奇安信:对成功登陆科创板表示祝贺
  13. 装文件存储服务器Fastdfs
  14. Spring与SpringBoot 学习笔记(1)
  15. POJ 2135Farm Tour--MCMF
  16. WhereHows前后端配置文件
  17. BOOST 升压电路调试笔记
  18. STM32——红外遥控
  19. 联想计算机无法启动怎么办,联想电脑打不开机怎么办
  20. PPT绘图之AI助力论文图

热门文章

  1. flv.js 是一个使用纯JavaScript编写的FLV(HTML5 Flash Video)播放器
  2. 移动OA系统,联动企业协作让办公高效无间断
  3. thrift-transport
  4. iOS App集成AirKiss技术
  5. [jzoj]2272. 基因锁
  6. Minecraft我的世界服务器配置记录
  7. Android伸手党系列之六:Android开发进阶
  8. 云服务器传文件用什么软件,免费云主机文件传输软件推荐,大文件极速秒传
  9. HALCON图像的转换
  10. 深度学习工具(Netscope)