如何使用Turndown使用JavaScript将HTML转换为Markdown

本文概述

  • A.将库用作模块(Node.js或ES6)
  • B.使用VanillaJS
  • 自订选项
许多项目不是从定义的结构开始, 而是随着时间的流逝而变化。例如, 一个基本博客可能从一开始就使用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 moduleconst TurndownService = require('turndown'); // Create an instance of the turndown servicelet turndownService = new TurndownService(); // Use the turndown method from the created instance// to convert the first argument (HTML string) to Markdownlet markdown = turndownService.turndown('< h1> Hello world!< /h1> '); // Outputs://// Hello world!// ============console.log(markdown);

B.使用VanillaJS如果你不喜欢模块捆绑器, 或者仅在浏览器中工作, 则可以使用脚本标签在HTML文档中简单地包含turndown的源脚本:
< !-- Include Using the unpkg cdn --> < script src="http://img.readke.com/220524/0939201J9-0.jpg"> < /script> < !-- Or from a local copy --> < script src="http://www.srcmini.com/path-to/turndown.js"> < /script>

请注意, 你可以从Github官方存储库中的发行版下载最新版本。包含脚本之后, 你应该能够使用前面工作方式中提到的相同逻辑将HTML转换为markdown:
// Create an instance of the turndown servicevar turndownService = new TurndownService(); // Use the turndown method from the created instance// to convert the first argument (HTML string) to Markdownvar markdown = turndownService.turndown('< h1> Hello world!< /h1> '); // Outputs:// // Hello world!// ============console.log(markdown);

自订选项该库提供了明显可定制的属性, 你可以通过一个简单的对象将其指定给转换器。需要在TurndownService类的实例中提供具有配置的此对象, 特别是在构造函数中作为第一个参数(这对Node.js和VanillaJS均有效):
选项 有效值 default
标题样式 setext或atx setext
hr 任何主题休息 * * *
bulletListMarker -, +或* *
codeBlockStyle 缩进或围起来 缩进
围栏 “ 或~~~ “ `
emDelimiter _ 要么 * +
strongDelimiter ** 要么 __ **
linkStyle 内联或引用 内联
linkReferenceStyle 完整, 折叠或快捷方式  
例如, 要将强调字符从_更改为*, 你只需执行以下操作:
// Configure turndownvar options = { emDelimiter: "*"}; // Create an instance of the turndown service with custom optionsvar turndownService = new TurndownService(options); // Use the turndown method from the created instance// to convert the first argument (HTML string) to Markdownvar markdown = turndownService.turndown('< h1> Hello world!< /h1> < em> Welcome< /em> '); // Outputs:// // Hello world!// ============//// *Welcome*console.log(markdown);

【如何使用Turndown使用JavaScript将HTML转换为Markdown】编码愉快!

    推荐阅读