バンドルサイズ:使うプラグインだけを読み込む
このドキュメントのすべての例と、ダウンロードに含まれるすべてのデモは、all_plugins.min.js を読み込みます。ページで使うかどうかにかかわらず、すべてのプラグインです。最初に動かすときには便利ですが、本番環境では無駄になります。実際に使うプラグインのファイルだけを読み込めば、エディターは gzip で 529 KB から 214 KB になります。ビルドの手順もバンドラーも、アプリケーションのコードの変更も必要なく、<script> タグを変えるだけです。
計測済みのプリセット
数値は、rte.js、既定のテーマの CSS、一覧にあるプラグインのファイルを合わせた gzip での転送サイズで、2.6.7 のビルドで計測したものです。その後、各プリセットをブラウザーで読み込み、起動すること、編集面が編集できること、プラグインの機能が存在して動作することを確認しました。最後の列は、既定の 58 個のツールバーボタンのうち、引き続き動作するものの数です。
| プリセット | 転送サイズ(gzip) | everything との比較 | ツールバーボタン | 使えるもの |
|---|---|---|---|---|
core | 214 KB | -60% | 52 | 書式設定、リスト、表、リンク、画像、検索と置換、元に戻す。プラグインのファイルは一切なし。 |
blog | 241 KB | -54% | 52 | ブロックの種類、チェックリスト、コードブロック、Markdown へのエクスポート、ローカルの下書き、目次。 |
documents | 297 KB | -44% | 52 | .docx と PDF へのエクスポート、文書のインポート、脚注、ページ分割、法律文書形式のリスト、相互参照。 |
review | 417 KB | -21% | 56 | コメント、変更履歴、リビジョン履歴、アクセシビリティチェッカー。 |
collab | 437 KB | -17% | 54 | リアルタイムの共同編集と、共同編集者が期待するレビュー機能。 |
everything | 529 KB | — | 58 | all_plugins.min.js:既定の構成で、何も変更しない場合はこれになります。 |
現在読み込んでいるもの
<!-- The default: every plugin, whether the page uses it or not. -->
<link rel="stylesheet" href="/richtexteditor/rte_theme_default.min.css">
<script src="/richtexteditor/rte.js"></script>
<script src="/richtexteditor/plugins/all_plugins.min.js"></script>より小さなエディター:blog プリセット
1 つのバンドルのタグを、プラグインごとに 1 つのタグに置き換えます。プラグイン同士はどの順序で読み込んでもかまいません。rte.js は最後にしてください。設定は別のファイルではなく、コンストラクターに渡す設定オブジェクトに書きます。rte.js にはすでに既定値が含まれており、ダウンロードのパッケージには、読み込むための独立した rte-config.js は含まれていません。
<link rel="stylesheet" href="/richtexteditor/rte_theme_default.min.css">
<!-- Only the plugins this editor uses. Order among plugins does not matter. -->
<script src="/richtexteditor/plugins/blocktypes.js"></script>
<script src="/richtexteditor/plugins/todolist.js"></script>
<script src="/richtexteditor/plugins/insertcode.js"></script>
<script src="/richtexteditor/plugins/markdownexport.js"></script>
<script src="/richtexteditor/plugins/localdraft.js"></script>
<script src="/richtexteditor/plugins/tableofcontents.js"></script>
<script src="/richtexteditor/rte.js"></script>ほかのプリセットも、プラグインの一覧が違うだけで同じ形です。
| プリセット | plugins/ 内のプラグインのファイル |
|---|---|
blog | blocktypes.js todolist.js insertcode.js markdownexport.js localdraft.js tableofcontents.js |
documents | blocktypes.js todolist.js tableofcontents.js documentimport.js docxexport.js pdfexport.js wordexport.js footnotes.js pagination.js multilevellist.js crossreference.js |
review | aitoolkit.js comments.js trackedchanges.js revisionhistory.js accessibilitychecker.js |
collab | aitoolkit.js yjscollab.js crdt-engine.min.js comments.js trackedchanges.js |
コアのみ:プラグインのファイルは一切なし
コアは骨組みだけのものではありません。太字、斜体、下線、フォントとサイズ、色、配置、リスト、インデント、リンク、画像、表、検索と置換、元に戻す/やり直し、HTML ソースの表示、貼り付け時のクリーンアップは、すべて rte.js に含まれています。プラグインを読み込まなくても、既定の 58 個のツールバーボタンのうち 52 個が動作します。
<!-- No plugin files. 52 of the 58 default toolbar buttons still work. -->
<link rel="stylesheet" href="/richtexteditor/rte_theme_default.min.css">
<script src="/richtexteditor/rte.js"></script>
<script>
var editor = new RichTextEditor("#div_editor");
</script>外したプラグインのボタンを非表示にする
// Dropping a plugin file does not remove its toolbar button - the button stays
// and does nothing when pressed. Name the tools you kept, and nothing else shows.
var config = {};
config.toolbar = "{bold,italic,underline}|{insertlink,insertimage}|{blocktypes}|{todolist,insertcode}";
var editor = new RichTextEditor("#div_editor", config);ツール名の全一覧はツールバーとメニュー項目のリファレンスにあります。
これでは解決しないこと
- コアが下限です。
rte.jsはそれだけで gzip 後 191 KB あり、これ以上分割できません。script タグをどう組み合わせても、coreの行より小さくはなりません。 - 個々のプラグインのファイルは縮小されていません。縮小されているのは、まとめた
all_plugins.min.jsだけです。そのため、上の数値は縮小前のプラグインのソースで計測したもので、自分の縮小ツールにかければ、削減量は表の値より大きくなることはあっても、小さくなることはありません。 - コメントには
aitoolkit.jsが必要です。reviewとcollabのプリセットでは、これは省略できません。コメントの永続化はそこにあり、これがないとeditor.commentsは存在していても、add()はすべてはっきりと失敗するのではなく null を返します。両方のプリセットの重さの大部分はこのファイルです。コメントが必要なら読み込んでください。 - ここでは何も遅延読み込みされません。これらは読み込み時の選択です。タグに含まれていないプラグインは、ページが存在する間ずっと使えません。
自分のページを確認する
ブラウザーのネットワークパネルを開き、richtexteditor で絞り込んで、圧縮前のバイト数を示すリソースサイズの列ではなく、転送サイズの列を見てください。一覧に all_plugins.min.js があれば、上の表の分だけまだ削減できます。