本文概述
许多项目不是从定义的结构开始, 而是随着时间的流逝而变化。例如, 一个基本博客可能从一开始就使用HTML格式将其内容存储在数据库中, 但是由于其简单性, 总有一天某人可能希望开始使用Markdown而不是HTML, 在这种情况下, 你需要从一种格式转换为另一种格式。如果你将服务器端逻辑与JavaScript(Node.js)一起使用, 甚至直接在浏览器中将HTML转换为编辑器中的Markdown, 则可以使用Turndown库轻松地完成此类任务, HTML到用JavaScript编写的Markdown转换器。
在本文中, 我们将向你展示如何在Node.js甚至浏览器中将HTML转换为Markdown。有关该库的更多信息, 请访问Github上的官方存储库, 或访问官方主页以在线测试转换器。
A.将库用作模块(Node.js或ES6)
如果你喜欢Webpack, Browserify等捆绑程序的主题, Turndown将在官方NPM软件包中提供对UMD的支持, 你可以使用以下NPM命令轻松将其安装在项目中:
npm install turndown --save
安装后, 你将可以使用require或import从Node.js或ES6导入模块。导入模块后, 逻辑非常简单。创建turndown服务的实例并将其存储到变量中, 从该变量执行turndown方法, 将要转换为markdown的HTML字符串作为第一个参数, 就是这样:
// Import Turndown module
const TurndownService = require('turndown');
// Create an instance of the turndown service
let turndownService = new TurndownService();
// Use the turndown method from the created instance
// to convert the first argument (HTML string) to Markdown
let markdown = turndownService.turndown('
// Outputs:
//
// Hello world!
// ============
console.log(markdown);
B.使用VanillaJS
如果你不喜欢模块捆绑器, 或者仅在浏览器中工作, 则可以使用脚本标签在HTML文档中简单地包含turndown的源脚本:
请注意, 你可以从Github官方存储库中的发行版下载最新版本。包含脚本之后, 你应该能够使用前面工作方式中提到的相同逻辑将HTML转换为markdown:
// Create an instance of the turndown service
var turndownService = new TurndownService();
// Use the turndown method from the created instance
// to convert the first argument (HTML string) to Markdown
var markdown = turndownService.turndown('
// Outputs:
//
// Hello world!
// ============
console.log(markdown);
自订选项
该库提供了明显可定制的属性, 你可以通过一个简单的对象将其指定给转换器。需要在TurndownService类的实例中提供具有配置的此对象, 特别是在构造函数中作为第一个参数(这对Node.js和VanillaJS均有效):
选项
有效值
default
标题样式
setext或atx
setext
hr
任何主题休息
* * *
bulletListMarker
-, +或*
*
codeBlockStyle
缩进或围起来
缩进
围栏
“或~~~
“`
emDelimiter
_ 要么 *
+
strongDelimiter
** 要么 __
**
linkStyle
内联或引用
内联
linkReferenceStyle
完整, 折叠或快捷方式
例如, 要将强调字符从_更改为*, 你只需执行以下操作:
// Configure turndown
var options = {
emDelimiter: "*"
};
// Create an instance of the turndown service with custom options
var turndownService = new TurndownService(options);
// Use the turndown method from the created instance
// to convert the first argument (HTML string) to Markdown
var markdown = turndownService.turndown('
// Outputs:
//
// Hello world!
// ============
//
// *Welcome*
console.log(markdown);
编码愉快!