玩转markdown 分享几个需要用到的工具
作者:ideras.me 发布时间:2023-01-29 22:53:20
【引自ideras.me的博客】前言
随着wordpress和静态网站的流行,markdown被用的越来越多。
markdown是一个面向写作的语法引擎,markdown的最终目的都是解析成html用于网页浏览,所以它兼容html语法,即你可以在 markdown文档中使用原生的html标签。
markdown解析器
开发静态网站生成器的时候都会采用一种叫front matter的格式进行网站内容写在类似下面的格式
---
2.title: 玩转markdown,你需要用到这几个工具
3.date: 2016-08-14 16:44:54
4.image: /img/pencils-762555_640.jpg
5.---
6.
7.## 前言
8.
9.随着wordpress和静态网站的流行,markdown被用的越来越多。...
当进行网站生成的时候需要进行markdown解析,然后渲染成html页面,那用什么工具进行解析呢?
marked
marked是最早用node.js开发的markdown解析器,同时提供CLI命令调用和node.js api调用。
CLI调用代码示例
$ marked -o hello.html
hello world
^D
$ cat hello.html
<p>hello world</p>
API调用示例
var marked = require('marked');
console.log(marked('I am using __markdown__.'));
// Outputs: <p>I am using <strong>markdown</strong>.</p>
这些都是一些通用的功能,但是marked还支持代码高亮,通过使用highlight.js。
使用highlight.js进行代码高亮相信大家都用到过,可能大家不知道是highlight.js还支持api方式调用,下面的代码会配置marked使用highlight.js进行代码高亮相信大家都用到过,可能大家不知道是highlight
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-js
markdown-js也是一款使用node.js开发的markdown解析器,基本用法和marked差不多,但是文档里面好像没有提到像marked一样进行代码高亮生成的接口,有兴趣的同学自己找找吧。
markdown生成器
to-markdown
什么是markdown生成器,就是根据html标签生成markdown文件。
github上面markdown生成器star数最高的是to-markdown。
简单的代码示例
var toMarkdown = require('to-markdown');
toMarkdown('<h1>Hello world!</h1>');
to-markdown最近进行了更新,增加了对gfm的兼容,gfm就是git flavored markdown的意思, 是github对markdown语法进行了扩展。
使用gfm的示例
toMarkdown('<del>Hello world!</del>', { gfm: true });
那这个to-markdown有什么用呢?
举个简单的例子,假如我想开发一个简单的rss阅读器,但是我又不想跳转到目标网站去阅读,因为不同的网站风格不一,导致不一致的阅读体验。
怎么办呢?那就把网站内容抓取下来,然后用to-markdown生成markdown文件,然后使用自己的模板样式进行统一渲染。
当然去除广告只是一个side effect。
heckyesmarkdown
除了to-markdown之外还有一个比较好用的api,heckyesmarkdown,这个项目使用了php-readability,提高文章的可读性。
可惜heckyesmarkdown没有开源出来,这个项目有点古老,估计那个时候github还没流行起来。
heckyesmarkdow对中文的支持不是非常友好,如果想抓取中文站还是使用to-markdown比较靠谱一点。
front matter
markdown写文章确实很方便,简单容易上手,但是markdown不能保存元数据,例如作者,日期,类型这样的结构化的数据如果都生成html标签的话提取的时候又稍微麻烦了点, 还得借助cheerio才能完成。
所以,为了能方便的保存文章的元数据,几乎所有的静态网站生成器都使用front matter格式来保存文章。
front matter文件通常分为头部和正文部分,头部一般使用yaml、toml和json三种格式,front matter 解析工具需要识别这三种格式的文件头。正文部分就是普通的markdown内容。
front-matter
front-matter也是用node.js开发的,相比markdown解析器来说,fornt-matter解析器要简单很多。
示例文件 example.md
---
title: Just hack'n
description: Nothing to see here
---
This is some text about some stuff that happened sometime ago
解析代码
var fs = require('fs')
, fm = require('front-matter')
fs.readFile('./example.md', 'utf8', function(err, data){
if (err) throw err
var content = fm(data)
console.log(content)
})
{
attributes: {
title: 'Just hack\'n',
description: 'Nothing to see here'
},
body: '\nThis is some text about some stuff that happened sometime ago',
frontmatter: 'title: Just hack\'n\ndescription: Nothing to see here'
}
front matter虽然格式看起来不太统一,却是对markdown强有力的补充。


猜你喜欢
- Mimesis是一个用于Python的高性能伪数据生成器, 支持多种不同的语言可以用来生成各种测试数据、假的 API 、任意结构的
- 我们先来看一个例子:#encoding=utf-8 # #by panda #桥接模式 def printInfo(info): &nbs
- Mysql 二进制安装方法下载mysqlhttps://dev.mysql.com/downloads/mysql/1.解压包tar xf
- 程序需求:输入用户名,密码认证成功显示欢迎信息输入错误三次后锁定用户流程图:好像画的不咋地查看代码:#!/usr/bin/env pytho
- 前言本文将记录学习基于 Socket 通信机制建立 TCP 反向连接,借助 Python 脚本实现主机远程控制的目的。我们在传输数据时,可以
- 本文介绍Golang pipe,以及在不同场景下的应用。Pipe介绍pipe实现从一个进程重定向至另一个进程,它是双向数据通道,用于实现进行
- 一、界面布局界面中有一个dataGridview、两个Button、两个Label和两个TextBox。二、定义数据库操作的公共类using
- 以下代码是保存视频# coding:utf-8import cv2import sysreload(sys)sys.setdefaulten
- 在 python 中除了用 opencv,也可以用 matplotlib 和 PIL 这两个库操作图片。本人偏爱 matpoltlib,因为
- 一、TensorTensor(张量是一个统称,其中包括很多类型):0阶张量:标量、常数、0-D Tensor;1阶张量:向量、1-D Ten
- 异常的本质导引问题在实际工作中,我们遇到的问题都不是完美的,比如:你写某个模块,用户输入不一定符合你的要求:你的程序要打开某个文件,这个文件
- 前言Python中,.whl文件是使用wheel格式存储的一种Python安装包,同时也是一个标准的内置包格式。可以将其看作Python库的
- 前言defer语句被用于预定对一个函数的调用。我们把这类被defer语句调用的函数称为延迟函数。而defer 延迟语句在其他编程语言里好像没
- 本文实例为大家分享了python matlibplot绘制3D图形的具体代码,供大家参考,具体内容如下1、散点图使用scatterfrom
- Asyncore模块提供了以异步的方式写入套接字服务客户端和服务器的基础结构。只有两种方式使一个程序在单处理器上实现“同时做不止一件事”。多
- JS怎样知道Flash广告条被网友点击过? 1、Flash广告条不是我做的,它的链接是写在里面的。 2、我想统计这个Flash被网友点击了多
- 将dataframe中的NaN替换成希望的值import pandas as pddf1 = pd.DataFrame([{'col
- 引言with 语句是从 Python 2.5 开始引入的一种与异常处理相关的功能(2.5 版本中要通过 from __future__ im
- 主机环境:(Python2.7.9 / Win8_64 / bs4)利用BeautifulSoup4来抓取 www.pm25.com 上的P
- 最近做一个项目(Asp.net+Sql Server 2000),在原来开发的机器上运行没有任何问题.但当我在另外一台机