image.png
Markdown是目前程序员中最流行的文档编写语言。其语法易读易写,同时也是我们锻炼技术的好目标。现在让我们用JS实现一个Markdown解析器,做成标准的JS库,发布到Github上吧。

Markdown语法

参考 https://commonmark.org/help/

语法 或者是 得到的效果
Italic Italic Italic
Bold Bold Bold
# Heading 1 Heading 1
=========
Heading 1
## Heading 2 Heading 2
————-
Heading 2
Link [Link][1]

[1]: http://b.org
Link
Image ![Image][1]

[1]: http://url/b.jpg
可扩展的Markdown解析器 - 图3
> Blockquote Blockquote
List
List
* List
- List
- List
- List

- List
- List
- List
1. One
2. Two
3. Three
1) One
2) Two
3) Three

1. One
1. Two
1. Three
Horizontal Rule

—-
Horizontal Rule

*
Horizontal Rule—-

| | Inline code with backticks | | Inline code with backticks | | <br /># code block<br />print '3 backticks or'<br />print 'indent 4 spaces'<br /> | ····# code block
····print ‘3 backticks or’
····print ‘indent 4 spaces’ | # code block
print ‘3 backticks or’
print ‘indent 4 spaces’ |

前置知识

  • Rollup.js

    可参考库

  • https://github.com/markdown-it/markdown-it

  • https://github.com/markedjs/marked

    要求

  • 要求完全实现CommonMark Spec

  • 兼容HTML
  • 程序至少分两个步骤(Lexer And Parse)
    • 将Markdown转换为JSON格式的AST
    • 通过AST转换为HTML
  • 工程方面
    • 程序安装后可以通过命令行使用,也可在文件中导入(import)
    • 添加插件机制,确保用户可以自行为Markdown添加新的语法
    • 使用Rollup.js打包,UMD,ES module…
    • 请使用Jest进行单元测试,要求测试覆盖率在90%以上
    • 请保证良好的代码风格(可以使用现有的代码风格)
    • 编写详尽的文档,可以使用VuePressDocsifyGitbook等文档工具
  • 请在Github上正式发布你的JS库
  • 请在阶段三发布该库的TypeScript版本