除了 Markdown 编辑器,你还需要会用程序来处理它

举报
G-washington 发表于 2020/02/15 03:22:42 2020/02/15
【摘要】 随着 wordpress 和静态网站的流行,markdown 被用的越来越多。我们已经介绍过很多 Markdown 编辑器,但是有时候你也需要用程序来处理 Markdown 文本。

作者:ideras

随着 wordpress 和静态网站的流行,markdown 被用的越来越多。我们已经介绍过很多 Markdown 编辑器,但是有时候你也需要用程序来处理 Markdown 文本。

markdown 是一个面向写作的语法引擎,markdown 的最终目的都是解析成 html 用于网页浏览,所以它兼容 html 语法,即你可以在 markdown 文档中使用原生的 html 标签。

markdown 解析器

开发静态网站生成器的时候都会采用一种叫 front matter 的格式进行网站内容写在类似下面的格式

image.png

当进行网站生成的时候需要进行 markdown 解析,然后渲染成 html 页面,那用什么工具进行解析呢?

marked[1]

marked 是最早用 node.js 开发的 markdown 解析器,同时提供 CLI 命令调用和 node.js API 调用。

CLI 调用代码示例

image.png

API调用示例

image.png

这些都是一些通用的功能,但是 marked 还支持代码高亮,通过使用 highlight.js[2]

使用 highlight.js 进行代码高亮相信大家都用到过,可能大家不知道是 highlight.js 还支持 API 方式调用,下面的代码会配置 marked 使用 highlight.js 进行代码高亮:

image.png

生成的代码已经包含代码高亮标签,最后只需要引入 highlight.js 的主题就能显示了,highlight.js 所有的颜色主题都在这里[3]

markdown-js[4]

markdown-js 也是一款使用 node.js 开发的 markdown 解析器,基本用法和 marked 差不多,但是文档里面好像没有提到像 marked 一样进行代码高亮生成的接口,有兴趣的同学自己找找吧。

markdown 生成器

to-markdown[5]

什么是 markdown 生成器,就是根据 html 标签生成 markdown 文件。

github 上面 markdown 生成器 star 数最高的是 to-markdown。

简单的代码示例

image.png

to-markdown 最近进行了更新,增加了对 gfm 的兼容,gfm 就是 git flavored markdown[6] 的意思, 是 github 对 markdown 语法进行的扩展。

使用 gfm 的示例

image.png

那这个 to-markdown 有什么用呢?

举个简单的例子,假如我想开发一个简单的 RSS 阅读器,但是我又不想跳转到目标网站去阅读,因为不同的网站风格不一,导致不一致的阅读体验。

怎么办呢?那就把网站内容抓取下来,然后用 to-markdown 生成 markdown 文件,然后使用自己的模板样式进行统一渲染。

当然去除广告只是一个 side effect。

heckyesmarkdown[7]

除了 to-markdown 之外还有一个比较好用的 API: heckyesmarkdown,这个项目使用了 php-readability[8],提高文章的可读性。

可惜 heckyesmarkdown 没有开源出来,这个项目有点古老,估计那个时候 github 还没流行起来。

heckyesmarkdow 对中文的支持不是非常友好,如果想抓取中文站还是使用 to-markdown 比较靠谱一点。

front matter

markdown 写文章确实很方便,简单容易上手,但是 markdown 不能保存元数据,例如作者,日期,类型这样的结构化的数据,如果都生成 html 标签的话提取的时候又稍微麻烦了点, 还得借助 cheerio[9] 才能完成。

所以,为了能方便的保存文章的元数据,几乎所有的静态网站生成器都使用 front matter 格式来保存文章。

front matter 文件通常分为头部和正文部分,头部一般使用 yaml[10]toml[11] 和 json 三种格式,front matter 解析工具需要识别这三种格式的文件头。正文部分就是普通的 markdown 内容。

front-matter[12]

front-matter 也是用 node.js 开发的,相比 markdown 解析器来说,fornt-matter 解析器要简单很多。

示例文件 example.md

image.png

front matter 虽然格式看起来不太统一,却是对 markdown 强有力的补充。


via: https://ideras.me/play-with-markdown-you-need-these-tools/

作者: ideras


[1]: https://github.com/chjj/marked

[2]: https://github.com/isagalaev/highlight.js

[3]: https://github.com/isagalaev/highlight.js/tree/master/src/styles

[4]: https://github.com/evilstreak/markdown-js

[5]: https://github.com/domchristie/to-markdown

[6]: https://guides.github.com/features/mastering-markdown/

[7]: http://heckyesmarkdown.com/

[8]: https://github.com/feelinglucky/php-readability

[9]: https://github.com/cheeriojs/cheerio

[10]: https://www.yaml.org

[11]: https://github.com/toml-lang/toml

[12]: https://github.com/jxson/front-matter

本文章转载自异步社区

原文链接:https://www.epubit.com/articleDetails?id=NC7E3EF9168E000019DDF1E17187314D0

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。