我是不是弱爆了,打算自己动手写个 markdown 渲染器,望而却步了 。。。

2017-10-22 10:40:28 +08:00
 ericling

用了不少 markdown 的渲染器,都不怎么满意,然后想自己去动手写个,找了个参照来看源码: https://github.com/StackExchange/pagedown

主要就是这三个文件:

Markdown.Converter.js
Markdown.Editor.js
Markdown.Sanitizer.js

打开源码一看,要写这么复杂的正则,考虑这么多种情况下的渲染,就感觉自己弱爆了,根本没敢动手(=_=!!)。知道就算是强行写出来了,也是漏洞百出,没有实用价值。

学 js 的同学,有多少小伙伴,自觉达到了能写出这个级别轮子的 js 水平哇?

8333 次点击
所在节点    JavaScript
32 条回复
jadeity
2017-10-22 13:44:06 +08:00
错了又能怎么样,试着来呗,他们也未必是一口气写出来的。
bramblex
2017-10-22 13:44:49 +08:00
@qdwang 不用正则更恶心呀
ChopMoun
2017-10-22 13:48:31 +08:00
我也能看看,完全写不出来。。。
mcfog
2017-10-22 13:55:12 +08:00
满屏的正则是写不好 markdown 渲染的,好好学编译原理吧少年
sexrobot
2017-10-22 17:08:34 +08:00
惊不惊喜,意不意外
hanzichi
2017-10-22 17:39:39 +08:00
我之前也想着看看 segmentfault 的 markdown 编辑器 hyperdown,看了之后发现完全看不下去 ...
bramblex
2017-10-22 17:43:42 +08:00
@mcfog

大哥,一看你就没学好编译原理啊,markdown 就是正则文法啊。连 CFG 都用不上。
Biwood
2017-10-22 17:45:10 +08:00
每个人的实现方式不一样,你要实现某个功能最好是按照自己的思路去实现,都是为了实现某个功能而导致逻辑复杂的,而不是为了复杂而复杂。
boboliu
2017-10-22 17:48:28 +08:00
我本来也想写,回来一看已经有现成的轮子可用了,需求足够,然后。。。
srlp
2017-10-22 19:17:14 +08:00
并没有那么简单,你需要的是编译原理,而不是无脑用正则匹配。

参考 https://github.com/commonmark/commonmark.js
anuan
2017-10-23 08:32:17 +08:00
感谢 @jtn007 @tamlok
搜到一个博客 比较了 Marked CommonMark Markdown-it Remarkable Showdown
http://tools.42du.cn/p/markdown-parser

Marked 够用且比较小 选他了
Mutoo
2017-10-23 09:38:24 +08:00
把 Markdown 的语法规则写出来,然后用 Nearley.js 生成解析器,再用这个解析器去渲染 html
https://nearley.js.org

另附 nearley 官网上提供了一个相关的轮子:
https://github.com/bobbybee/uPresent/blob/master/uPresent.ne

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX