為了用 Markdown 寫微信公眾號,自定義了一個編輯器

為了用 Markdown 寫微信公眾號,自定義了一個編輯器

  • 135編輯器[1]
  • i排版[2]
  • 秀米 XIUMI[3]
  • 易點編輯器[4]

上面這些編輯器,應該是小編們用得最多的幾款,它可以快速添加各種樣式插件,使文章更吸引眼球,讓用戶看起來很爽,欲罷不能。畢竟他們最注重的是閱讀量,而非內容。

我也有寫文章的習慣,但我不是小編,格式上只追求簡約大方即可,重點在文字上,希望內容能產生一些價值。自從用了 Markdown 標記語言後,寫文章就再也沒用過其他的編輯器。

什麼是 Markdown?

什麼是 Markdown?它是目前最流行的寫作標記語言,沒有之一。它能夠通過簡單標記就能實現文檔格式,讓寫作者

專注於內容

由於它是純文本,所以它可以像代碼一樣進行版本管理,同時,它對 Web 也非常友好,方便轉成 HTML,甚至直接將 Markdown 文檔生成靜態站點,很多免費的自建博客服務都是採用的這種方案。目前幾乎所有主流的寫作平臺,其編輯器都支持 Markdown。

一些 Markdown 編輯器,甚至在其基礎上,擴展了很多功能。例如:公式及表格的支持。前段時間,一個外國小哥的數學筆記火了,全程像敲代碼一般,緊追數學老師板書,記了 1700 + 頁筆記。感興趣可以看下這篇文章:

1700頁數學筆記火了!全程敲代碼,速度飛快易搜索,硬核小哥教你上手LaTeX+Vim

為什麼不支持 Markdown?

雖然支持它的編輯器多到數不過來,可是國內最著名的內容發佈平臺 —— 微信公眾號,它的編輯器就不支持 Markdown,可算折騰壞了一幫寫作者。為什麼不支持?可能有兩個原因吧。

用戶學習成本

Markdown 語法雖然簡單,但對大部分人來說,畢竟也是一門新的知識,這就增加了用戶的學習使用成本。你要知道,絕大部分的人,哪怕一點點的新東西都是接受不了的,微信沒把編輯器做成 Word 的樣式,我覺得已經是剋制了的。

支持的樣式並不完整

Markdown 只提供了簡單的樣式標籤,例如:標題,引用,鏈接等等,而對於複雜的樣式,例如文字背景色等等,它是不支持的。

而微信面對的是全體創作者,單純使用 Markdown 編輯器定然不能滿足基本需求,而兼容 Markdown 的需求優先級並不高。

所以,一直以來,微信並不支持 Markdown,但我猜測,支持 Markdown 的功能遲早還是會做的。

你不是說了 Markdown 對 Web 非常友好嘛,轉成富文本樣式,然後貼到微信公眾號的編輯器裡,就可以了呀。道理是沒錯,但這正是折騰人的關鍵所在,因為 Markdown 只定義了基礎的標籤,而沒有樣式。

於是,各家的 Markdown 編輯器導出的樣式都是有差異的,並且,跟微信公眾號上的默認樣式也不兼容。所以,貼進去後,顯示出來的樣式各不相同,如果文章裡再有一些非標準的 Markdown 語法,顯示出來更是五花八門了。一直以來都很糾結,對於一些樣式複雜的文章,幾乎就不發公眾號了,因為調整樣式,就要耗費大量的精力。

除了樣式兼容性問題,還有微信公眾號對外部鏈接限制問題,公眾號內文章只允許引用微信內部鏈接,不支持外部鏈接。文章裡若添加了第三方鏈接,我們只能硬生生的將 鏈接重新再貼進去。或者通過「閱讀原文」鏈接原文地址。

解決方案

而對於適配公眾號樣式的 Markdown 編輯器,幾乎沒有,之前接觸過 Md2All[5],功能上很完整,但是它並非只針對微信公眾號,所以在細節方面的處理,總是差強人意。

一直想著,應該寫一款符合自己樣式風格的公眾號編輯器。然而,一個偶然機會,發現了它,花三小時寫這個工具,只為一分鐘拯救公眾號排版。

在程序世界裡,有句老話說「不要重複造輪子」,你費好大勁去研究怎麼做,沒準別人已經都出成品了,這樣就造成了資源浪費。幸運的是,我的「輪子」還沒有開始動手呢。

總要做點自己的貢獻

這款公眾號編輯器基本符合我的心裡預期,簡單的界面,優雅的樣式風格,你看到的這篇文章的樣式,就是通過它生成的。

它還有一些特殊的增強項,比如將外部鏈接自動生成腳註,放在文章底部;支持日語注音假名和漢語拼音。

雖然默認的樣式已經基本滿足我了,但還是缺少一些自定義的功能,比如字體大小的設置,以及主題切換等功能,作者並沒有實現。但是,作者已經將源代碼開源了,而我們不能只知道一味索取,而不懂得付出。

於是,我便動手實現了這部分的功能。好在代碼並不複雜,簡單研究一下,週末花了點時間,就把這部分的功能填補上了。

最後

這個過程還是很有趣,不僅解決了自己的痛點,還學到了知識,同時還做出了一點點自己的貢獻。如果你也喜歡這篇文章的樣式,這個微信公眾號編輯器分享給你。微信公眾號格式化編輯器 - 作者原版本[6]

根據源代碼,我重寫了一個後臺服務版本,計劃提供一些在線 API 的功能。倉庫地址:wechat-format-server: 基於 wechat-format 的服務端版本[7]

References

  • [1] 135編輯器: http://www.135editor.com/
  • [2] i排版: http://ipaiban.com/bianji
  • [3] 秀米 XIUMI: https://xiumi.us/#/
  • [4] 易點編輯器: http://www.wxeditor.com/
  • [5] Md2All: http://md.aclickall.com/
  • [6] 微信公眾號格式化編輯器 - 作者原版本: https://lab.lyric.im/wxformat/
  • [7] wechat-format-server: 基於 wechat-format 的服務端版本: https://github.com/pengloo53/wechat-format-server


分享到:


相關文章: