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

随着 wordpress 和静态网站的流行 , markdown 被用的越来越多 。 我们已经介绍过很多 Markdown 编辑器 , 但是有时候你也需要用程序来处理 Markdown 文本 。
markdown 是一个面向写作的语法引擎 , markdown 的最终目的都是解析成 html 用于网页浏览 , 所以它兼容 html 语法 , 即你可以在 markdown 文档中使用原生的 html 标签 。
markdown 解析器
开发静态网站生成器的时候都会采用一种叫 front matter 的格式进行网站内容写在类似下面的格式
---title: 玩转markdown , 你需要用到这几个工具date: 2016-08-14 16:44:54image: /img/pencils-762555_640.jpg---## 前言随着wordpress和静态网站的流行 , markdown被用的越来越多 。 ...当进行网站生成的时候需要进行 markdown 解析 , 然后渲染成 html 页面 , 那用什么工具进行解析呢?
markedmarked 是最早用 node.js 开发的 markdown 解析器 , 同时提供 CLI 命令调用和 node.js API 调用 。
CLI 调用代码示例
$ marked -o hello.htmlhello world^D$ cat hello.htmlhello world
API调用示例
var marked = require('marked');console.log(marked('I am using __markdown__.'));// Outputs: I am using markdown.
这些都是一些通用的功能 , 但是 marked 还支持代码高亮 , 通过使用 highlight.js 。
【除了 Markdown 编辑器,你还需要会用程序来处理它】使用 highlight.js 进行代码高亮相信大家都用到过 , 可能大家不知道是 highlight.js 还支持 API 方式调用 , 下面的代码会配置 marked 使用 highlight.js 进行代码高亮:
marked.setOptions({highlight: function (code, lang) {var res;if (lang) {res = hljs.highlight(lang, code, true).value;} else {res = hljs.highlightAuto(code).value;}return res;}});生成的代码已经包含代码高亮标签 , 最后只需要引入 highlight.js 的主题就能显示了 , highlight.js 所有的颜色主题都在这里
markdown-jsmarkdown-js 也是一款使用 node.js 开发的 markdown 解析器 , 基本用法和 marked 差不多 , 但是文档里面好像没有提到像 marked 一样进行代码高亮生成的接口 , 有兴趣的同学自己找找吧 。
markdown 生成器
to-markdown什么是 markdown 生成器 , 就是根据 html 标签生成 markdown 文件 。
github 上面 markdown 生成器 star 数最高的是 to-markdown 。
简单的代码示例
var toMarkdown = require('to-markdown');toMarkdown('Hello world!');to-markdown 最近进行了更新 , 增加了对 gfm 的兼容 , gfm 就是 git flavored markdown的意思 ,是 github 对 markdown 语法进行的扩展 。
使用 gfm 的示例
toMarkdown('Hello world!', { gfm: true });那这个 to-markdown 有什么用呢?
举个简单的例子 , 假如我想开发一个简单的 RSS 阅读器 , 但是我又不想跳转到目标网站去阅读 , 因为不同的网站风格不一 , 导致不一致的阅读体验 。
怎么办呢?那就把网站内容抓取下来 , 然后用 to-markdown 生成 markdown 文件 , 然后使用自己的模板样式进行统一渲染 。
当然去除广告只是一个 side effect 。
heckyesmarkdown除了 to-markdown 之外还有一个比较好用的 API: heckyesmarkdown , 这个项目使用了 php-readability , 提高文章的可读性 。
可惜 heckyesmarkdown 没有开源出来 , 这个项目有点古老 , 估计那个时候 github 还没流行起来 。
heckyesmarkdow 对中文的支持不是非常友好 , 如果想抓取中文站还是使用 to-markdown 比较靠谱一点 。