做者:灵魂画师牧码php
本文提到的 Markdown Nice 体验地址:mdnice.comcss
公元 2019 年,微信公众号排版能力孱弱,始终为运营者所诟病,秀米、135 编辑器等工具割据一方。html
但不管是微信原生工具,仍是其余编辑器,都让创做者不得不将有限的创做经历分散到排版设计上。前端
Markdown 解决排版的灵丹妙药,应运而生。node
Markdown 是一种排版语法,拥有极简的输入方式和极低的学习成本。react
富含了标题、引用、加粗、连接、图片、代码段、公式等一切在文字创做中须要的排版格式。ios
拥有它,让人专一于内容自己,而不被格式所打扰。git
这么优秀的排版语法,但是微信公众号也不支持呀。程序员
别急!Markdown Nice 来帮你解决问题!github
一款开源 Markdown 编辑器,写完后即排版成功,复制便可粘贴到微信公众号。
So what? 只有这点么?
固然不是!Nice宝宝你还有什么特性呀?
这么多优秀的特性摆在你面前,还在等什么?
地址:https://mdnice.com
快让你的微信排版 Nice 起来!
没想到你还在看
咳咳、、、
不要小看Nice宝宝我,为了可以使用 Markdown 进行公众号排版,我但是和微信公众号编辑器作了半年的斗争,才赢得了如今的战果!
想听听我是如何战斗的?下面且听我娓娓道来!
微信公众号编辑器源于百度 FEX 前端团队的开源的 ueditor 项目,这但是宝宝我扒取了网页代码发现的,如图所示:
由于 ueditor 是富文本编辑器,因此我即将面临的是 markdown->富文本
的转换战役,在开源界或者软件界这种转换战役有了至关多的优秀实现。好比:
可是上述工具都存在一个问题,没有很好地将 CSS 样式融入富文本中,进而适配微信编辑器,以致于国内其余各大平台的富文本编辑器。
那么有没有尝试弥补这一问题的工具呢?实际上是有的:
可是上述工具也各自有不完美的地方,因而Nice宝宝我发现了这个契机,把本身生产了出来,解决一切不完美!
Markdown Nice 是一个开源项目,由不少开源技术合体而成,其中主要包括:
注:下文会提到上述某些开源库,开源库具体做用请参考此处。
在拥有上述技术傍身以后,我向微信编辑器宣战,打响了战斗第一枪!
微信公众号在2018年之前,是彻底不支持代码块的,目前的支持也很单一,而且存在代码字体较大的问题。
说来很气,微信公众号编辑器的开发者,就木有想过代码块对程序员群体是多么重要么??
为此我找来了highlight.js
代码高亮神器,帮助解决代码主题单一的问题。
通过必定的筛选后,最终选定了 atom-one-dark、atom-one-light、monikai、GitHub、vs201五、xcode 和微信代码主题共 7 个代码样式供你们选择。
其中微信代码主题因为其不属于highlight.js
的归属范畴,故而其结构须要从微信公众号编辑器源码中获取,下面两张图展现了如何获取:
而 highlight.js
与 markdown-it
解析器是关联使用的,故而工具中存在 2 个 markdown 解析器,分别用于解析微信代码主题和其余代码主题,源码参考。
除了上述问题外,不少技术类公众号代码中会存在:一行代码过长致使的多行显示问题。
该问题使用如下 CSS 代码便可解决:
pre code {
display: -webkit-box !important
}
复制代码
对比效果如图所示:
今后之后使用 Markdown Nice 的同志们代码更美观啦!
一篇好的文章怎么能够没有图片?
(某些技术人员说:个人就没有)
图片管理是每个成熟编辑器都会遇到的问题。
Nice 宝宝最开始使用 SM.MS 图床,该图床由一位大佬在运维,很是感谢!
使用该图床虽然可以上传图片,可是粘贴到微信编辑器时,失败率极高(想踩死微信编辑器),如图所示:
真是{喜闻乐见|hē hē hē hē}呀!
为了解决上述问题,Markdown Nice 前后支持了自定义阿里云和七牛云图床,经过购买阿里云和七牛云的服务使用自建图床。
可是!让使用者本身配置,尽管有配置文档,可是整个配置过程复杂无比,简直惨绝人寰!
因而,Nice 宝宝又使用本身的帐号,自建图床,设定保存时间为一天,提供临时排版使用的 mdnice 图床。至此,工具中的图片上传支持状况以下:
图床 | 费用 | 有效期 | 失败率 |
---|---|---|---|
mdnice | 免费 | 1天 | 低 |
SM.MS | 免费 | 长期 | 高 |
阿里云 | 参考 | 自定义 | 低 |
七牛云 | 10G免费 | 自定义 | 低 |
这场图床的战役中,最大的难度在于须要阅读阿里云 OSS 和七牛云 KODO 的文档,而且使用其开源出来的工具包 ali-oss 和 qiniu-js 。
这其中又涉及到了 FormData、file对象、base64 和 blob 之间的神奇转换,源码参考。
总之,这场战斗打的不亦乐乎。
微信公众号排版中,数学公式是一个噩梦!
由于微信编辑器作了如下三件事情:
这三件事情简直像魔鬼的步伐,把公式需求者放在光滑的地板上摩擦、摩擦....
目前惟一可行的方案就是将公式转换成图片,再将图片直接贴到公众号里,Nice宝宝以为本身这个想法简直是完美!
可是,怎么作呢......
突然灵机一动,想到了朋友曾经推荐的一个转换公式网站 codecogs,这个网站可以作到将任意公式转换成png图片并给出可访问连接。
可是因为图片稳定性,没法直接使用该连接,会存在和第二场战役同样,图片粘贴失败的状况,让人苦不堪言。
因而Nice宝宝自建后台服务,封装 RESTful 接口供前端调用,实现了公式转图片的功能!通过测试,彻底可使用,粘贴后再根据排版状况调整图片大小便可。
其中对于大量公式的转换,前端合理使用了异步请求,并不是一个个转换而是并行执行,性能上达到了10个公式也能2秒转换完毕的效果,彻底可用于公式排版。
众所周知(不知道也得知道),微信不支持外链,除了域名为https://mp.weixin.qq.com/
的合法连接外,其余的连接出现后都会被自动删除。
而添加外链的惟一官方方式就是在阅读全文处,固然,直接将连接自己放到文中或者制做二维码图片也是能够的选择。
而 Nice 宝宝则提供了将微信外链转为脚注的方式解决该问题,是否是很优雅呢?
其中连接和脚注的使用区别以下:
连接:[文字](连接 "文字")
脚注:[文字](脚注解释 "脚注名字")
复制代码
这里又涉及到了一个常见的问题,就是不少公众号做者的文章中,原来在其余平台发布时都是连接,而到这里排版时须要进行挨个修改,实在是让人头大。
因而Nice宝宝我又作了一个小改进,就是在粘贴文章的时候会自动监测是否存在外链,并提示做者是否一键转成脚注,这样就没必要手工修改了,赞不赞!
和微信公众号编辑器对抗,是个极其有意思的过程。除了上述提到的问题以外,还有不少的细节点须要注意,在此就不一一讨论了,感兴趣欢迎阅读源码。
Markdown Nice 的战斗之旅还远远没有结束,官网制做、浏览器插件、本地工具和排版纠正等功能蓄势待发。
大多数人而言,内容重于排版,排版重于设计。
内容是吸引读者的核心,因此最重要。
而排版与设计之间的比较,做为一个曾经的微信美术编辑,随着排版经验的增多,发现文章的效果并不在于额外的花边、点缀。
整齐、舒服、简单是硬道理!
设计 = 排版 + 创意
由于:大多数人不会获取创意,或认为创意成本太高。
因此:大多数人不作设计,富文本设计不适合单纯的内容编辑者。
虽然:大多数人也不会排版,或认为排版成本太高。
可是:Markdown Nice 将用户从排版中释放出来,只关注内容自己。
开源是个既简单又困难的过程:
正如上面描述的那样,作开源实际上是在作一款产品,有多是技术产品(好比 redis、ant design),也有多是业务产品(好比 Markdown Nice),只有作好了才可能对别人产生价值。
作产品的过程曲折而漫长,对照 Markdown Nice 开发过程,能够看到如下的步骤:
参与开源,一路走来,甚是不易,望君珍惜。
最后,感谢每一位开源参与者,欢迎更多人参与到开源中来,还有好多代码等着有人来写呢!
『讲解开源项目系列』——让对开源项目感兴趣的人再也不畏惧、让开源项目的发起者再也不孤单。跟着咱们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎留言联系咱们、加入咱们,让更多人爱上开源、贡献开源~