ユーザーが入力したコンテンツを必要とするアプリケーションに取り組んでおり、StackOverflowスタイルのMarkdownエディターを使用することにしました。過去数日間このトピックを調査した後、ベースWMDエディターには多数のフォークがあり、いくつかはいくつかの基本的な機能強化があり、いくつかはStackOverflowのものとは深刻な違いがあることに気付きました。
これがアプリケーションの中心になるので、できる限り最高のコードベースから始めたいと思います。そこにある多くのソリューションのどれが私のニーズに最も適しているかを誰かが推薦できれば幸いです。
以下は、要件に加えて、私がすでに見つけたものです。この質問が、どのバージョンを使用するかを決定するのに役立ち、自分のニーズにさらに適したポートを見つけるのに役立つことを願っています。
img
URLを追加するだけでなく、画像をアップロードするボタンが欲しい)。これが私が見たコードベースのいくつかです。明らかに、私はそこに別の解決策を逃しているかもしれません。
結局、既製のエディターをもう少し探した後、 http://github.com/openlibrary/wmd にあるOpenLibraryWMDポートに落ち着きました。
私は編集ボックスを自分で表示/非表示にする機能を実装することになりました。これはほとんどの部分で非常に簡単であることがわかりました。私はボタンを使ってエディターを拡張していません。ソースをいじくり回す必要があると思いますが、そうは思いません。大したことになるでしょう。
スタックオーバーフローエディタとはいくつかの違いがあります。
<br/>
が発生します。私はたまたまこの方法を好むので、この変更で大丈夫です。まあ、これが同様のエディターを探している人に役立つことを願っています。エディターをカスタマイズすることになった場合は、独自のブランチを作成します(MITライセンス)の下でライセンスされています)が、今はソースコードをいじることなく逃げています。
さて、この質問(および解決策)はかなり古くなっているので、ここで何か最新のものを載せると思いました。 :)
それは2014年の初めであり、同じ問題に達したとき、私は最終的に PageDown-Bootstrap を使用しました。これは、完全にカスタマイズ可能なスタイルバー(ボタンバー)を備えた、TwitterBootstrapベースのWMDエディターです。
Bootstrap-Markdown と呼ばれる代替手段もあります。これも非常に有望に見えます。
ライブプレビュー部分の場合、 Showdown ライブラリは非常に簡単に操作できます(Edanが指摘しているように、コードベースに含まれています)
このようなものを使用します(使用したくない場合はjQueryを使用する必要はありません)
$(document).ready(function(){
var converter = new Attacklab.showdown.converter();
function update_description_preview(){
$('#description-preview').html(converter.makeHtml($("#id_description").val()));
}
update_description_preview();
$("#id_description").keyup(function(){
update_description_preview();
});
});
Update_description_preview関数は、コンバーターオブジェクトを使用して#id_description要素のマークダウンを読み取り、それを#description-preview要素にダンプします。
ここでは、プレビューウィンドウを初期化するように定義された直後に関数を呼び出しています(エディターにテキストがプリロードされていました)
最後のビットは、キーアップイベントに関数を登録することです。
古い要件に完全に適合するかどうかはわかりませんが、2014年に利用可能な別のソリューションは、Apache 2.0でライセンスされ、toptenソフトウェアによって作成されたプレビュー付きのオープンソースマークダウンエディターです。
オンラインデモはこちらから入手できます: http://www.toptensoftware.com/markdowndeep/dingus
標準 Common Markdown には、マークダウンをhtmlに変換するためのスタンドアロンのjavascriptファイルが含まれています。公式 デモ またはこれ プランカー に示されているように実装は簡単です。
大まかに:
<script src="//jgm.github.io/stmd/js/stmd.js"></script>
...
var reader = new stmd.DocParser();
var writer = new stmd.HtmlRenderer();
...
var parsed = reader.parse("Some **markdown** text");
var result = writer.renderBlock(parsed);