个性化阅读
专注于IT技术分析

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

本文概述

许多项目不是从定义的结构开始, 而是随着时间的流逝而变化。例如, 一个基本博客可能从一开始就使用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('<h1>Hello world!</h1>');

// Outputs:
//
// Hello world!
// ============
console.log(markdown);

B.使用VanillaJS

如果你不喜欢模块捆绑器, 或者仅在浏览器中工作, 则可以使用脚本标签在HTML文档中简单地包含turndown的源脚本:

<!-- Include Using the unpkg cdn -->
<script src="https://unpkg.com/turndown/dist/turndown.js"></script>

<!-- Or from a local copy -->
<script src="./path-to/turndown.js"></script>

请注意, 你可以从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('<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 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('<h1>Hello world!</h1> <em>Welcome</em>');

// Outputs:
// 
// Hello world!
// ============
//
// *Welcome*
console.log(markdown);

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何使用Turndown使用JavaScript将HTML转换为Markdown

评论 抢沙发

评论前必须登录!