大数跨境
0
0

再见 Typora!这款 Markdown 神器绝了!

再见 Typora!这款 Markdown 神器绝了! 终码一生
2021-10-07
0

点击“终码一生”,关注,置顶公众号

每日技术干货,第一时间送达!




对于创作平台来说内容编辑器是十分重要的功能,强大的编辑器可以让创作者专注于创作“笔”下生花。而最好取悦程序员创作者的方法之一就是支持 Markdown 写作,因为大多数程序员都是用 Markdown 来写文章。



Markdown 作为程序员写作的心头爱,有很多优点:

  • 通过语法实现排版,不需要点选手动设置样式

  • 快速实现复杂内容,如:代码块、超链接、公式等

  • 让创作者有更多时间专注于内容


但,同样的也有些缺点:

  • 有一定的学习门槛,对于非程序员不太友好

  • 看原文档就像看“代码”,预览效果需要工具或编辑器支持


那有没有能够即保留 Markdown 带来的便利,同时又降低门槛的办法呢?大多数老玩家会脱口而出:Typora



Typora 直接使用完全没有问题,但由于它没有开源。如果想在自己的项目实现类似的 Markdown 编辑器,就需要另寻方案了。另外关注公号“终码一生”,回复关键词“资料”,获取视频教程和最新的面试资料


如果你正在寻找功能强大、易于接入、所见即所得的 Markdown 编辑器、组件、插件,就请花 5 分钟读完本文!


接下来带来的开源项目完全满足上述需求。Milkdown 一款高颜值+自由(插件)的所见即所得,集合 Markdown 编辑器、组件、插件于一身的开源项目。



https://github.com/Saul-Mirone/milkdown


你想要的功能它都有,不要的功能也可以通过删减插件,减少体积。插件的设计思想+完善的中文文档,让你分分钟定制出最适合自己的 Markdown 编辑器!



下面跟着项目作者一起来感受 Milkdown 的魅力吧。


 

1

安装


下面提供了 2 种方式,可直接体验:


在线尝试:https://milkdown.dev/#/online-demo

VS Code 插件:https://marketplace.visualstudio.com/items?itemName=mirone.milkdown


1.1 功能展示


方便的编写表格:


直接粘贴和复制 Markdown 文本:



甚至协同编辑:



双栏 Markdown 编辑器很常见。但 双向绑定 的 Markdown 编辑器,目前仅此一家:



功能方面就介绍这么多,下面用 Milkdown 轻松实现个编辑器。


1.2 第一个编辑器


Milkdown 的核心以及各种插件都是独立的 NPM 包,可以直接通过 NPM 来进行安装。


npm i @milkdown/core @milkdown/preset-commonmark @milkdown/theme-nord


上手也十分简单:


import { Editor } from '@milkdown/core';
import { nord } from '@milkdown/theme-nord';
import { commonmark } from '@milkdown/preset-commonmark';

Editor
  .make()
  .use(nord)
  .use(commonmark)
  .create();


我们先使用 make 来初始化编辑器,然后使用 use 来加载插件,最后使用 create 来创建编辑器



1.3 丰富的插件


插件是 Milkdown 的核心,它本质上就是一个插件加载器,一切功能都是通过插件来提供的。表格是一个插件、主题是一个插件、甚至一行简单的文本也是一个插件。另外关注公号“终码一生”,回复关键词“资料”,获取视频教程和最新的面试资料














Markdown编辑器

Markdown 其实在 2004 年就有了,不过之前一直很小众,这几年随着相关应用平台的发展,Markdown以其独到的优势迅速火起来了。Markdown编辑器使用一套格式标记语言来对文档内容进行排版和格式显示。而Markdown的标记很少,常用的也就十个左右,它是一种非常轻量的标记语言。


Markdown编辑器深受技术人员的喜爱,Markdown可以用来编写说明文档,用它写的文档很多技术平台都能通用;Markdown可以用来写技术博客,可以使说明部分和代码都非常清晰易读;Markdown格式转换方便,还可以轻松地将文本转换为 html、pdf等。


Markdown编辑器分类

按照Markdown编辑器的使用环境,可以将它们归纳为三类。


平台集成工具:各大在线博客、社区平台自带的写作工具,比如CSDN、博客园、简书等。

独立软件类:下载到自己机器上使用的独立产品,可以编辑本地文件,比如Mou、MarkdownEditor、Haroopad等。

插件类:他自己本身是不能独立使用的,可以在你现有的主流编辑器安装,使你现有的编辑器具有Markdown的功能,比如Atom、WebStorm、Sublime Text等。

这三类软件分别面向三类Markdown用户,大家可以根据自己的需求来选择使用。


下面是我收集的一些业界比较受欢迎的Markdown编辑器,喜欢用Markdown的朋友可以一起看看,一起探讨。


1、Mou

Mou 是一款由国人开发的Markdown 编辑器,支持实时预览,但是仅支持 苹果操作系统,可以说是目前最好用的免费 Markdown 编辑器,对汉字兼容性非常好。提供语法高亮、在线预览、同步滚动、全屏模式,支持自定保存、自动匹配,允许自定义主题等等。支持 CSS,HTML 和 PDF 导出等功能。


Mou是独立的软件。


更多介绍及下载:http://25.io/mou/




 


2、MarkdownPad

MarkdownPad被很多人称赞为windows下最好用的Markdown编辑器之一,不过仅支持windows。它有免费版和收费版(MarkdownPad Pro),一般情况下免费版就够用了,想用pro版的可以自行网上下载,强大的国人crack无处不在的~ ~。


MarkdownPad支持键盘快捷键和工具栏操作,即可添加标记也可移除,支持即时HTML预览、支持自定义配色方案、字体、大小和布局、支持音乐视频,可以导出HTML和PDF。


MarkdownPad是独立的软件。


更多介绍及下载:http://markdownpad.com/




 


3、Typora

Typora也是非常用名,非常好用的markdown编辑器,它的设计理念很不一样,是真正的即时预览型编辑器,不同于左右两个窗口的编辑器。Typora的设计理念就是极致简洁,它将「写字」和「预览」这两件事情合并了。


如果要修改已经写好的markdown标记可以点击切换到“源代码模式”。


Typora 同样支持 Windows、OS X 和 Linux多个操作系统,支持数学编辑,可与 Word 直接格式转换,可以进行多种文档格式转换。Typora 流畅度和反应速度很快,特别适合那些手速快的人。


Typora是独立的软件。


更多介绍及下载:https://www.typora.io/




 


4、Atom

Atom 可以说是专门为程序员推出的一个文本编辑器,界面简洁,支持实时预览。功能非常多,除了Markdown同时支持CSS,HTML,JavaScript等网页编程语言,还支持宏定义,自动分屏功能等。Atom还具有语义输入模式,比例输入code即会自动开启代码模式。


Atom支持windows、苹果、linux等多种操作系统。Atom是由著名的github平台出品的。


Atom是独立的软件,也支持插件方式。

5、Haroopad

Haroopad也是一款非常流行的编辑器,来自韩国。Haroopad支持 Windows、Mac OS X 和 Linux三大操作系统。Haroopad的特色是主题样式丰富,语法高亮支持无数种编程语言,几乎你能想到的编程语言他都支持。Ubuntu/Linux 用户使用该工具比例很高,Haroopad 也是开源免费的。Haroopad也支持导出HTML、PDF,也支持数学公式和流程图。


Haroopad是独立的软件。


更多介绍及下载:http://pad.haroopress.com/user.html




 


6、SublimeText

SublimeText界面简约大方,定位专业,功能强大,并具有良好的扩展功能。SublimeText是收费软件,支持windows、苹果、linux三大操作系统。支持的编程语言有十几种,并可通过第三方插件无限扩充。


SublimeText默认不能实时预览,但通过 Markdown Preview 的插件来实现该功能。SublimeText屏幕右边有一个文档缩略图,可以看到文档全貌。


SublimeText是独立的软件,也支持插件方式。


更多介绍及下载:http://www.sublimetext.com/




 


7、Cmd Markdown

Cmd Markdown是一款不错的写作工具,同时也兼顾博客等写作平台,国内作业部落出品,同时支持Windows、苹果、Linux操作系统,也有 Web 在线创作平台,界面很舒服。


Cmd Markdown是独立的软件、也有平台集成版本。


更多介绍及下载:https://www.zybuluo.com/mdeditor




 


8、Byword

Byword。一款轻量级的 Markdown 编辑器,比较容易上手,适合新手使用。支持苹果系列系统,包括台式机、iPad和iPhone,收费软件。


Byword是独立的软件。


更多介绍及下载:https://bywordapp.com/




 


9、CuteMarkEd

CuteMarkEd 是一个基于qt5的Markdown 编辑器,开源免费,支持windows、苹果、linux多种系统平台,提供实时 HTML 预览、数学表达式、代码高亮和PDF导出。


CuteMarkEd是独立的软件。


更多介绍及下载:https://cloose.github.io/CuteMarkEd/




10、Dillinger

Dillinger是国外的 Markdown 编辑器,Web在线创作。漂亮强大,支持md、 html、pdf 文件导出,支持Dropbox、Bitbucket、Github、Google Drive、Onedrive 一键保存,也可以编写本地文件。支持实时预览,跨平台,浏览器打开。


Dillinger是平台集成工具,不是独立的软件。


更多介绍及下载:https://dillinger.io/




 


11、EpicEditor


EpicEditor 是个嵌入式 JavaScript Markdown 编辑器,可以全屏编辑,在线预览,自动草稿保存,支持离线等功能。对于开发者有很大吸引力,很容易集成在自己的系统中,并很容易自定义,也支持主题自定义。


EpicEditor属于插件类的API工具。


更多介绍及下载:http://ww1.epiceditor.com/




 


12、MarkdownEditor

MarkdownEditor是一款基于浏览器的 Markdown 编辑器,虽然他是独立软件,但该软件内嵌一个浏览器。功能非常简单实用、反应速度很快,号称是Markdown领域的NotePad(记事本)。MarkdownEditor还有拼写检查功能。


MarkdownEditor有两个版本,都是国人开发的,都是开源免费的。


MarkdownEditor是独立的软件、也有在线Web集成版。


更多介绍及下载:http://jbt.github.io/markdown-editor/

13、MarkPad

MarkPad是免费开源的 Markdown 编辑器,界面风格与window系统类似,同时只支持Window。支持实时预览,开放直接保存到你的博客或github的接口,有语法检查,支持代码高亮。


MarkPad是独立的软件。


更多介绍及下载:http://code52.org/DownmarkerWPF/




 


14、Marxico

Marxico中文名马克飞象,有桌面版、Chrome App插件,也支持Web集成版。这款编辑器的特点是可以直接把文本存到印象笔记平台中,另外还有导出HTML时可以将其中的图片自动转成base64保存。其他的实时预览、语法高亮也都支持。


不过这款软件是收费的~ ~


Marxico是独立的软件、同时有Chrome App插件,也支持Web集成。


更多介绍及下载:http://marxi.co/




 


实在太困了,就先介绍这么多吧~ ~ ~ (PS:刚接触写博客,发现还真是个累活呀:-P)


最后


markdown编辑器产品非常多,以上只是本人接触过的一些,相信还有很多很好的markdown存在,其实也没必要全都试一遍,只有最适合自己的,才是最好的。



目前官方已经提供了许多插件,确保可以开箱即用。下面仅列举了部分插件:


名称 描述
plugin-clipboard 添加 markdown 格式的复制粘贴能力
plugin-cursor 添加 drop 和 gap 光标
plugin-listener 添加监听器支持
plugin-collaborative 添加协同编辑支持
plugin-table 添加表格语法支持(已经包含在 gfm 中)
plugin-prism 添加 prism 用于支持代码块高亮


 

2

技术栈


Milkdown 基于下面的工具实现:

  • Prosemirror:一个用于在 web 端构建富文本编辑器的工具包
  • Remark:正确的 Markdown 解析器
  • TypeScript:以 TypeScript 编写
  • Emotion:用于构建样式的强大的 css in js 工具
  • Prism:代码块支持
  • Katex:高性能的渲染数学公式


富文本编辑器本身是一个天坑。虽然 ContentEditable 看起来很美好,但实际用起来就会发现问题层出不穷。因此我们基于 Prosemirror 来实现富文本编辑器。因为它足够成熟、久经工业的锤炼,并且拥有良好的架构和 API 设计。


 

3

架构


Prosemirror 的核心逻辑其实类似于 React,它通过一种函数式的数据映射来体现编辑器的 UI 和内部状态的关系,如图:



编辑器通过 EditorState 来保存当前状态,并由 EditorState 产生出 EditorView,即 UI 视图。用户在 UI 视图上进行的操作最终会产生 DOM event,例如:input 事件、click 事件。DOM event 事件会产生 Transaction,代表了对 State 的修改,类似于 Redux 或 Vuex 中的 Action。这些 Transaction 会与原来的 EditorState 进行计算,产生新的 EditorState,如此循环。


Prosemirror 通过这样的方式将编辑器中的每个状态以 EditorState 的方式保存了下来,它是一颗树状结构。而有一点编译原理基础的朋友都知道,任何编程语言都有对应的 AST(抽象语法树)。因此我们需要的就是建立 Prosemirror 中的 EditorState 与 Markdown 的抽象语法树之间的联系。Remark 完美契合我们的需求,因为它有设计良好的 AST,并且易于扩展自己的语法。


这样一来 Milkdown 的架构也逐渐清晰:


Markdown <-> Remark AST <-> Prosemirror State <-> UI


 

4

结语


在开始这个项目前,我尝试过各种各样的 Markdown 编辑器,但没有找到一款特别满意的。因为它们都是闭源,而且功能由开发商提供,有的功能太过于臃肿、有的又太过简单。既然这样,我索性自己做一款能够轻松定制功能,非程序员也能轻松使用的 Markdown 编辑器,也就有了大家看到的 Milkdown。


希望开源的 Milkdown 让用户有更自由的选择,打破 Markdown 编辑器的“垄断”。


https://github.com/Saul-Mirone/milkdown


PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。


往期推荐



手写了一个简单的JSON解析器,网友直乎:牛!

卸载 Navicat!事实证明这款 Java 开发的工具更加强大...

Nginx+Redis 搭建高性能缓存利器!

美团:订单30分钟未支付自动取消怎么实现?

推荐一款帅气逼人的 Redis 可视化工具!

面试官:为什么 MySQL 中 Delete 表数据后,磁盘空间却还是被占用?


【声明】内容源于网络
0
0
终码一生
开发者聚集地。分享Java相关开发技术(JVM,多线程,高并发,性能调优等),开源项目,常见开发问题和前沿科技资讯!
内容 1876
粉丝 0
终码一生 开发者聚集地。分享Java相关开发技术(JVM,多线程,高并发,性能调优等),开源项目,常见开发问题和前沿科技资讯!
总阅读1.0k
粉丝0
内容1.9k