php之markdown文件管理工具的實現代碼

來源:互聯網
上載者:User

本文主要和大家分享php之markdown文件管理工具的實現代碼,希望能協助到大家。

主要目標:

1.可以多人編輯

2.可以在瀏覽器中查看

3.有一個可以摺疊的目錄

4.支援多級目錄

5.支援markdown

6.快, 方便

工作後一直在從事PHP開發, 從以前的大包大攬到現在的退居服務端寫介面, 當中接觸過幾個的介面文件管理工具或系統, 簡單描述下:

  1. showdoc, 功能全面而且簡潔, 有使用者,許可權管理功能, 支援markdown, 支援匯出word, 有多種文件範本, 目錄支援兩級摺疊

  2. confluence, 功能強大(許可權管理, 寄件提醒, 全文檢索搜尋, 外掛程式管理等), 重, 收費的一個文件管理系統

  3. swagger, 需要在代碼中寫大量的注釋去配合

  4. readmine, 功能豐富類似confluence, 它的文檔是以txt儲存的, 可以追溯變更, 可以全文檢索搜尋, 但是寫文檔有點痛苦, 適合任務/bug跟蹤管理等

  5. gitbook, nodejs安裝, 支援markdown, 支援npm外掛程式, 左側的可摺疊的分類樹就需要裝外掛程式, 也可以裝搜尋外掛程式, 目錄是單獨的markdown檔案, 我使用的時候感覺從md到HTML編譯太慢(600+的文檔, 要編譯25分鐘多, 如果有增量編譯或提高編譯速度的外掛程式還請各位賜教

解決方案:

  1. 結合git就可以實現, 正好也可以利用git的許可權管理功能

  2. 需要將markdown編譯成HTML檔案部署到內網

  3. 因為要在瀏覽器中查看, 這裡最終選擇了接入簡單, 介面清爽, 無依賴的dtree.js (不依賴jQuery)

  4. 這個功能用了樹的後根序遍曆演算法實現了對多級檔案的讀取(沒有用遞迴, 擔心寫著寫著把自己繞進去), 正好dtree.js 也支援多級目錄摺疊

  5. 這裡我最終選擇了segmentfault官方出的PHP編譯工具類(因為他們已經參考最佳化了很多類似的PHP類,感謝~)

  6. 快的話, 編譯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點多才最終寫好, 這個功能也算是核心組件之一了吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.