以前、私は Lens 上に記事の投稿プラットフォームを構築しようと考えていましたが、進めるにつれてうまくいかなくなり、ただの Mirror のクロスチェーンバージョンのような感じになり、価値がないと感じました。現在は半ば諦め状態です。ここでは、プロジェクトの過程で試したいくつかのリッチテキストエディタとそれらの比較を記録します。
Editor.js https://editorjs.io/
モジュール化され、拡張性とカスタマイズ性に優れたエディタです。ブロックベースの編集方法を採用しており、コンテンツの組織化とフォーマットが簡単になります。
最初に試したエディタで、Notion のようなアプリを作るのに便利でした。JSON 形式で出力することができ、IPFS に直接保存するのに便利です。多くのプラグインがあり、エディタに必要な機能のほとんどをカバーしており、プラグアンドプレイできます。ただし、TS のサポートが不足しているため、使いづらいです。また、エディタのスタイルを変更するのも難しく、私が求めているのは Mirror の WYSIWYG 効果ですが、少なくとも私には変更できません。これらの欠点を除けば、エディタとしては十分に使えます。
Lexical https://lexical.dev/
Facebook チームが開発した拡張可能なテキストエディタフレームワークです。
Editor.js を捨てた後、Lexical を見つけました。私の要求に合うと感じました。自由度が十分で、TS も十分にサポートされており、望むようなエディタに拡張することができます。ただし、より詳細な研究をすると、これはまだフレームワークに過ぎず、自分自身のノードを定義する必要があり、プラグインも自分で作成する必要があります。つまり、自分自身のエディタを作るためにはさらにラッピングする必要があります。また、Lexcial は現在開発初期の状態であり、公式ドキュメントが不十分であり、個人プロジェクトで使用すると後続のメンテナンスリスクがあります。コストが高すぎると感じ、使用を断念しました。
PS:https://github.com/ozanyurtsever/verbumは、Lexical をベースにしたエディタで、使用は比較的簡単です。
TinyMCE https://www.tiny.cloud/
機能豊富で成熟したリッチテキストエディタです。
TinyMCE はすでに成熟した商用アプリケーションであり、テキストのフォーマット、画像やメディアの挿入、リストやテーブルの作成など、ほとんどのリッチテキスト編集のニーズを満たすことができます。多くの公式およびコミュニティプラグイン、使いやすい API が提供されており、特定の要件を満たすためにエディタを簡単にカスタマイズすることができます。ドキュメントも十分に詳細で、ほとんどの問題をカバーしています。ユーザーはエディタの外観をカスタマイズして、プロジェクトのデザイン要件に合わせることができます。
これは現時点で総合的なコストパフォーマンスが最も良いエディタだと感じています。十分にシンプルでありながら複雑であり、さまざまな要件に対応できます。欠点はパフォーマンスの問題であり、特に多くのプラグインを読み込んだり、大量のコンテンツを処理する場合に顕著です。一部のプラグインの機能には料金がかかるかもしれませんが、プラグインを独自にカスタマイズして解決することができます。
CKEditor https://ckeditor.com/
機能豊富で成熟したリッチテキストエディタです。
TinyMCE と似ていますが、詳細な研究はしていません。ただし、CKEditor には私が好きな新機能があります。doc ファイルを直接アップロードし、doc ファイルのスタイルを保持することができます。多くの doc ファイルを処理する必要がある企業にとって非常に便利です。ただし、HTML に限定されており、自動ページ分割やヘッダー・フッターのインポートは手動で処理する必要があります。
CodeMirror https://codemirror.net/
軽量なコードエディタで、主にコード編集を対象としています。
CodeMirror についてはあまり詳しくありませんが、一家言を述べるだけです。厳密に言えば、CodeMirror はリッチテキストエディタではありませんが、markdown のサポートを拡張してリッチテキストエディタにすることができます。xlog が現在行っているようにです。最大の利点は非常に軽量であり、上記のパフォーマンスの問題はありません。ただし、エディタとしてはまだ使い勝手が良くなく、さらなるカスタマイズが必要です。例えば、xlog では現在、アップロードした画像のサイズや位置、キャプションの追加ができません。
最後に感じたことは、ユーザーに使いやすい長文エディタをプロジェクトで提供することは本当に難しいということです。