擴展博客園的markdown編輯器


背景

作為程序員, 我有些"懶"也有些"散", 懶是不願意做重復的事情, 散是到處撒網, 收獲寥寥. 以往自己搭了博客, 寫了不少文章, 可惜第一次服務商硬盤掛了, 沒有數據..第二次到期忘了續費, 打不開了, 也懶得再去折騰.

這是我選擇博客園的原因, 人多, 事少, 速度快.

稍微不滿意的地方是markdown編輯體驗有點(非常)糟糕..

編輯器需求和代碼示例

我之前曾經做過web編輯器的研究, 也嘗試過開發類似CodeMirror , ACE 這樣的在線"代碼編輯器", 但始終覺得這些都不是我想要的.

這類編輯器有三個痛點:

  • 瀏覽器兼容性差, 看開發者的修訂log就知道了, 每次新瀏覽器出來, 都可能出現一些兼容性問題;
  • 性能不理想, 因為要完全模擬光標/選取, 甚至控制排版, 導致編輯大文件卡頓嚴重;
  • 工作量巨大, 需要持之以恆, 反復調試, 很不容易.

當然, 上面這幾個其實都是很優秀的作品, 也大量使用在線上產品, 所以對於研究和開發編輯器都是參考榜樣.

作為最原始的"網頁編輯器", textarea仍是使用率最高的, 比如github上的markdown編輯區域, 博客園. textarea作為編輯器優勢:

  • 文本樣式單一, 樣式通過標記描述, 寫作不容易分心;
  • 簡單可依賴;

但劣勢也很明顯:

  • 沒有語法高亮支持;
  • 沒有鍵盤控制(快捷鍵)等;
  • 沒有自動完成, 代碼片段等;

除了"語法高亮"有點困難外, 其他劣勢通過js可以彌補.

所以編輯器的基本需求就下面幾點:

  • 快捷鍵;
  • 自動完成;
  • 代碼片段;
  • 文本替換: 上面需求的基礎, 即根據鍵盤輸入, 替換已輸入的文本.

針對上面的需求, 可以總結為下面幾點開發工作:

以上是我兩三年前的代碼, 可能代碼組織一般..

示例

把上面幾個js文件合並, 可以查看下面demo效果:

html編輯器

請嘗試輸入html<tab>, divc<tab>, divid<tab>查看效果, 更多功能光標在編輯器中按F1鍵查看:


markdown編輯器

請嘗試輸入h3<tab>, img<tab>查看效果, 更多功能光標在編輯器中按F1鍵查看:


更多功能:

  • 體驗自動完成, 輸入字母a, 然后按<ctrl><down>組合鍵;
  • 縮進多行, 選中多行按<tab>, 或者反向縮進<shift><tab>
  • ...查看<F1>幫助吧, 好久了, 我已經不記得實現了那些功能了, 有興趣的同學可以查看源碼.

擴展

如果想擴展自己的代碼片段或者單詞表, 可以參考詞典文件, markdown片段 來添加自己的單詞.

擴展博客園的markdown編輯器

ok, 到此為止, 可以寫一個收藏欄按鈕來擴展博客園的markdown編輯器了.將下面鏈接拖到收藏欄, 在博客園編輯界面, 點擊一下, 體驗擴展后的markdown編輯器吧~

擴展markdown編輯器

結束

希望博客園開發同學考慮加上類似功能 😃


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM