ホームページ  >  記事  >  バックエンド開発  >  PHPマークダウンドキュメント管理ツールの実装コード

PHPマークダウンドキュメント管理ツールの実装コード

小云云
小云云オリジナル
2018-02-01 14:14:442440ブラウズ

この記事では主に PHP でのマークダウンドキュメント管理ツールの実装コードを共有します。お役に立てれば幸いです。

主な目標:

1. 複数人で編集できる

3. 折りたたみ可能なディレクトリを用意する

5. マークダウンをサポートする

6 .速くて便利

私は働き始めてからPHPの開発に携わり、サーバーサイドでインターフェースを書くことから始めて、いくつかのインターフェース文書管理ツールやシステムに触れてきました。簡単な説明:

showdoc、包括的かつ簡潔、ユーザーと権限の管理機能があり、マークダウンをサポート、Word エクスポートをサポート、さまざまなドキュメント テンプレートがあり、ディレクトリは 2 レベルの折りたたみをサポートしています

  1. confluence、強力機能 (権限管理、メールリマインダー、全文検索、プラグイン管理など)、重い有料文書管理

    システム
  2. swagger、連携するにはコードに大量のコメントを記述する必要があります

  3. readmine、confluenceと同様の機能が豊富で、ドキュメントがtxtで保存され、変更の追跡や全文検索が可能ですが、ドキュメントを書くのは少し面倒ですタスク/バグ追跡管理などに適しています。

  4. gitbook、nodejs のインストール、マークダウンのサポート、npm プラグインのサポート、左側の折りたたみ可能なディレクトリ ツリーが必要です。プラグインをインストールします。検索プラグインもインストールできます。ディレクトリは別のマークダウン ファイルです。使ってみると、MDからHTMLへのコンパイルが遅すぎると感じました(600以上のドキュメントのコンパイルに25分以上かかりました。インクリメンタルコンパイルがあるか、コンパイル速度を上げることができれば、プラグインについてアドバイスをお願いします

  5. 解決策:

gitと組み合わせることで実現でき、gitの権限管理機能も使えます

  1. マークダウンをHTMLファイルにコンパイルしてイントラネットに展開する必要があります

  2. ブラウザで表示する必要があるため、ここでは最終的に、シンプルなアクセス、クリーンなインターフェイス、依存関係のない (jQuery に依存しない) dtree.js を選択しました

  3. この関数はルート順序トラバーサルを使用しますマルチレベルを実現するためのツリーのアルゴリズム (再帰を使用せず、書き込みに関与することを心配せずに)、たまたま dtree.js もマルチレベルのディレクトリの折りたたみをサポートしています

  4. ここで私は最終的に PHP コンパイル ツールを選択しましたクラスはsegmentfaultによって正式にリリースされました(私が多くの同様のPHPクラスを参照して最適化したため、ありがとう〜)

  5. それが速い場合、600以上のファイルをコンパイルするのに約2秒かかります。受け入れ可能であり、インクリメンタル コンパイルをサポートしています。便利な場合は、主にディレクトリの自動生成に反映されます。

  6. 発生した問題:

  7. インクリメンタル コンパイル

私は最初、md ファイルを HTML にコンパイルする必要があるかどうかを判断し、md ファイルの作成時刻と最終変更時刻を比較しました

しかし、後で、この方法はコピーされ名前が変更された一部のファイルでは機能しないことが判明しました。

最後に、中間ファイルを使用してコンパイルされたファイルの時間を記録し、コンパイルが必要かどうかを判断するために最大値 (作成時間、最終変更時間) を記録しました

冗長なファイルを削除します

その後の使用中に、次のことが判明しました。一部の md ファイルは削除されましたが、最終的にコンパイルされたファイルは自動的に削除されませんでした

そのため、md ファイルはコンパイル中に削除されます。最終的な HTML ファイルと区別して、冗長な HTML ファイルを削除します

まず dtree.js を統合します


何よりも、dtree.js には、ディレクトリを表示し、展開と折りたたみを操作するために特定の必要な json データが必要です

また、dtree.js のフォントは比較的小さく、その画像、スタイル、およびスクリプト ファイルはすべて相対パスです。これにより、現在のドメイン名に基づいた絶対パスになるよう、dtree.js コードの階層ディレクトリの

アセンブリを変更する必要がなくなります。

アセンブリとは、HTMLヘッダー、ボトム、サイドバーなどのHTMLコードを事前に記述し、コンパイルされたコンテンツにこれらのコンテンツをつなぎ合わせ、最終的に対応するフォルダーに入れて美化することです。これは主に公式によるものです。セグメントフォルトのコンパイル ツールは、HTML 要素 (テーブル、コードなど) にスタイルを追加しません。ここで github の関連する CSS スタイルを見つけて、それらを美化しました

これには、多くの脳細胞も費やしました。大学で動的ハフマンコーディングを書いていたとき、私はツリートラバーサルを書きました

それを書き終えるまでに夜中の3時までかかったとは誰が知っていましたか?この機能は、コアコンポーネントの 1 つと考えることができます。

関連する推奨事項:

Vuejs は vue-markdown を使用してコメント メソッドをレンダリングします


VSCode でマークダウンをプレビューし、プレビュー スタイルを変更する

マークダウン エディターの簡単な紹介

以上がPHPマークダウンドキュメント管理ツールの実装コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。