HTML 转 Markdown 如此简单

sxkk20082年前知识分享251

前言

现在好的技术文章非常多,每天各种技术群里,各种技术社区,有很多质量非常好的技术文章,比如 CSDN,掘金、微信公众号等, 于是我们就收藏了,收藏等于学会。

可是问题来了,我们收藏到哪呢? CSDN 有了弹窗广告,掘金之前好的文章居然被删除了,其实最好的方式是将文章保存为 markdown,保存到自己的知识库中,或者可以上传自己的 github。

如何将文章将保存为 markdown ?

下面推荐 2 个工具非常好用可以将直接将 HTML 转为 markdown,大家可以收藏使用

s17085102232022

其实 devtool.tech 里面的每个工具都挺好用的。

HTML 转 markdown 是如何实现?

其实有个包 turndown 可以直接将 html 转为 markdown,并且可以在浏览器和 nodejs 中执行

安装

npm

npm install turndown

浏览器

<script src="https://unpkg.com/turndown/dist/turndown.js">script>

使用

var TurndownService = require('turndown')

var turndownService = new TurndownService()
var markdown = turndownService.turndown('

Hello world!

'
)

直接将 html 字符串传入就可以了,返回 markdown 字符串

turndown 还支持配置规则, 比如

保留标签

turndownService.keep(['del', 'ins'])
turndownService.turndown('

Hello worldWorld

'
)
// 'Hello worldWorld'

移除标签

turndownService.remove('del')
turndownService.turndown('

Hello worldWorld

'
)
// 'Hello World'

插件

turndown 还支持插件的使用,官方就提供了 turndown-plugin-gfm,意思是 GitHub Flavored Markdown 功能是特点有:

  • strikethrough 支持 , , 和 标签,也就是删除线

  • tables 支持表格

  • taskListItems 支持任务列表,也就是 checkbox 任务

使用代码

var TurndownService = require('turndown')
var turndownPluginGfm = require('turndown-plugin-gfm')

var gfm = turndownPluginGfm.gfm
var turndownService = new TurndownService()
turndownService.use(gfm)
var markdown = turndownService.turndown('Hello world!')

一般都要加上这个插件

开发一个类似的工具

其实使用 turndown 已经完成类似的功能,为了美观,我们可以给代码加上代码编辑器 codemirror

新的 codemirror6 完全重写,采用了插件化的形式,代码量更小,我用的技术栈是 react, 社区封装了一个好用的库 rodemirror

使用代码示例

import { useMemo, useState } from 'react'
import CodeMirror from 'rodemirror'
import { basicSetup } from '@codemirror/basic-setup'
import { oneDark } from '@codemirror/theme-one-dark'
import { javascript } from '@codemirror/lang-javascript'
import { markdown as langMarkdown } from '@codemirror/lang-markdown'

const Editor = () => {
  const extensions = useMemo(() => [basicSetup, oneDark, javascript(), langMarkdown()], [])

  const defaultValue = "console.log('Hello world!')"
  // remove if you do not need the value
  const [value, setValue] = useState(defaultValue)

  return (
    <CodeMirror
      value={defaultValue}
      onUpdate={(v) => {
        if (v.docChanged) {
          setValue(v.state.doc.toString())
        }
      }}
      extensions={extensions}
    />
  )
}

export default Editor

lang-javascript 下的包是让 CodeMirror 支持语法高亮。接下来就是配合 react 常规写法。效果如下

image.png

小结

image.png

一个简易版的 html 转 markdown 编辑器就实现了,大家可以手动尝试实现一下。本文未涉及这些工具的内部实现原理,后续若遇到问题需要深入研究。

小技巧

常规的做法,是使用 chreome 控制台选中 article 标签就可以直接复制 html 了,但有时候如果 html 不规范,可能转换失败。

有时候有些文章 文章并不是在一个标签中,比如 medium.com 中的文章就不在一个标签中,这个时候,拷贝 HTML 就麻烦了。

还有个问题

Word 中的文档要转成 markdown 怎么办呢 ?

其实我们可以通过直接选中文本然后支持粘贴到 typora 中,然后就直接转成 markdown 了。

所以说了这么多,这个工具我没开发 😊。

以上就是本文全部内容,希望这篇文章对大家有所帮助,也可以参考我往期的文章或者在评论区交流你的想法和心得,欢迎一起探索前端。

相关文章

如果你会 TailwindCSS 我推荐 VSCODE 安装 这个插件tailwind-snippets 可以快速帮我们来发出一个常用的代码片段,大家可以在 https://www.tailwindsnippets.ml/snippets 查看效果,快速实现我们的 html 页面

tailwind-snippets 预览

部署

Vercel

Next.js 开发商 Vercel 获得最近 1.5 亿美元 D 轮融资。Vercel 注册什么的我就不讲了,建议使用GitHub 登录, 点击new project创建一个项目,这个项目可以从自己的 GitHub 库导入或者选择 Vercel 给的模板,Vercel 给的模板(下图)首先也会导入进自己的 GitHub 库,总之要先把内容导入进 GitHub 库才行。

Vercel 支持的框架

Vercel 为个人用户提供了

  1. 自动 HTTPS/SSL
  2. 带宽 100 GB
  3. 并发构建,每天 10 万次调用
  4. Serverless Function

所以 Vercel 不光支持静态网站也支持 nodejs 动态网站,如果想要其他后端语言

可以选择 heroku

heroku

Heroku 是一个支持多种编程语言的云平台,并且提供了 Heroku PostgresHeroku RedisApache Kafka on Heroku

Heroku 支持的语言

Heroku 虽然提供了比较全面的编程语言和数据库支持,免费用户还支持

  1. 使用 Git 和 Docker 部署
  2. 自定义二级域名
  3. 容器编排
  4. 自动操作系统补丁

但 heroku 对国内用户支持不是很友好,第一点访问国内速度比不上 Vercel, 第二点 163 和 QQ 邮箱都不能注册,想要注册得要其他邮箱, 第三没有免费的 ssl。第四项目源代码只能有 500M。

数据库选择

MongoDB

选择 https://cloud.mongodb.com/

mongodb 首页截图

创建 database 的时候选择 free;

选择免费截图 地域可以选择日本或者新加坡。

接着创建一个用户 创建一个用户 密码是自动生成的,要把密码拷贝下来

接着要创建一个允许链接的 IP 地址

在 mongodb.com 设置允许链接的IP

如何白嫖一个动态网站

前言我们知道,想要搭建一个网站往往需要一下几个步骤:域名注册服务器购买数据库购买或部署网站设计网站开发网站备案网站上线在国内上线一个网站,域名还必须得备案,光是域名备案的话还的几个星期,整个流程下来,...

人工智能大会探讨未来科技发展趋势

人工智能大会探讨未来科技发展趋势

  人工智能大会在某市如火如荼地举行,吸引了全球各地的科技爱好者和专家学者。本次大会着重讨论了人工智能技术在各行业的应用前景以及未来科技发展的趋势,引起了广泛关注。  人工智...

天翼智慧社区:领航智能生活,引领未来社区生态

天翼智慧社区:领航智能生活,引领未来社区生态

  随着科技的不断发展,智能生活已经成为当今社会的一大潮流。天翼智慧社区作为中国电信旗下的智慧社区品牌,以其先进的技术和全面的服务,成为了引领智能社区发展的领军者。从智能家居...

使用 Prism.js 对代码进行语法高亮

前言通常我们在开发博客网站或者技术社区(类似掘金)这类网站的时候,就会有需求“对代码进行语法高亮”,我在开发 mdx editor(微信排版编辑器) 的时候,也有这个功能。社区对应语法高亮比较流行的有...

AI绘画的机理及其应用

AI绘画的机理及其应用

  近年来,AI(人工智能)在绘画领域中得到了越来越广泛的应用。AI绘画的基本思路是将计算机视觉和机器学习技术应用于图像处理和绘画中。那么,AI绘画的机理是什么?它有哪些应用...

新工具让文献检索进入AI模式

新工具让文献检索进入AI模式

  查文献、读文献,是做科研的一项根本作业。据统计,科研人员花费在查找和消化科技材料上的时刻约占悉数科研时刻的51%。有没有一种可能,将文献变成一个知识库或许数据库,用人工智...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。