Markdown转HTML

来源: https://juejin.cn/post/7310787455112445987

Markdown

一种简单易用的标记语言,旨在使纯文本格式化变得简单且易于阅读,它的设计目标是使文档易于阅读和书写同时保持格式的清晰和简洁

为什么会有Markdown转HTML的需求

尽管 Markdown 本身非常方便,但在某些情况下,将其转换为 HTML 是必要的
博客和网站:许多博客平台和静态站点生成器是使用markdown编写的内容,然后将其转换为HTML以在网页上展示
文档手册:技术文档、用户手册等经常使用 Markdown 编写,然后转换为 HTML 以便在网页上查看
等等

怎么转

EJS

一款强大的JavaScript引擎模板,它可以帮助我们在HTML中嵌入动态内容,文档地址:https://ejs.bootcss.com/

<% '脚本' 标签,用于流程控制,无输出。
<%_ 删除其前面的空格符
<%= 输出数据到模板(输出是转义 HTML 标签)
<%- 输出非转义的数据到模板
<%# 注释标签,不执行、不输出内容
<%% 输出字符串 '<%'
%> 一般结束标签
-%> 删除紧随其后的换行符
_%> 将结束标签后面的空格符删除

marked

Markdown解析器和编译器,它可以将Markdown语法转换为HTML标记

const marked = require('marked')
marked.parse(readme.toString()) //调用parse即可

BrowserSync

实时预览和同步您的网页更改

新建项目marked

新建文件夹marked,再执行npm init -y
分别安装ejs,marked,browser-sync

npm install ejs
npm install marked
npm install brower-sync

新建template.ejs

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><%=title %></title>
    <link rel="stylesheet" href = "./index.css"></link>
</head>
<body>
    <%- content %>
</body>
</html>

新建index.js

// 用于渲染ejs模板
const ejs = require('ejs'); 
// 读写文件
const fs = require('node:fs'); 
// markdown解析器和编译器,将markdown语法解析为html标记
const marked = require('marked'); 
// 同步读取README.md'件全部内容
const readme = fs.readFileSync('README.md');
// 启动本地服务器实时预览和同步网页的更改
const browserSync = require('browser-sync'); 
// 定义打开浏览器的函数
const openBrowser =  () => {
    // 创建一个浏览器同步实例
    const browser = browserSync.create()
    browser.init({
        server: {
            baseDir: './',//设置基础目录为当前目录
            index: 'index.html',//设置默认页面为 index.html
        }
    })
    return browser
}
// 渲染template.ejs模板,并将markdown内容作为参数传递给模板
ejs.renderFile('template.ejs', {
    content: marked.parse(readme.toString()),
    title:'markdown to html'
},(err,data)=>{
    if(err){
        // 如果出现错误打印错误信息
        console.log(err)
    }
    // fs创建一个写入流
    let writeStream = fs.createWriteStream('index.html')
    // 将渲染后的html内容写入到index.html文件中
    writeStream.write(data)
// 结束写入
    writeStream.end()
    // 监听写入完成事件,调用回调函数,打开浏览器
    writeStream.on('finish',()=>{
        openBrowser()
    })
})     

执行node index.js目录下就会生成index.html,并在浏览器打开

<think>好的,用户让我介绍一下MarkdownHTML。首先,我需要明确用户的需求是什么。可能他们正在学习Markdown,或者需要将文档换成网页格式,想了解背后的换过程。用户可能有一定的技术背景,但不确定他们对MarkdownHTML的熟悉程度,所以解释时要兼顾基础概念。 首先,我应该从基本概念入手,解释MarkdownHTML各自的作用。Markdown是轻量级标记语言,适合快速编写内容,而HTML是网页的基础结构。用户可能知道这点,但需要明确两者之间的关系。 接下来,换的必要性。用户可能想知道为什么需要换,比如为了网页显示、发布内容或者与其他工具集成。这时候要列举常见的应用场景,比如博客、文档生成,这样用户能联想到自己的使用情况。 然后是换规则部分。这里需要详细说明Markdown语法如何对应到HTML标签。例如,标题、段落、列表、链接、图片、代码块等。这部分需要结构清晰,用例子展示换前后的对比,帮助用户直观理解。同时要注意使用用户提到的数学表达式格式,比如行内公式用$...$,独立公式用$$...$$,确保LaTeX正确。 换工具和方法也是重点。用户可能需要实际操作的指导,所以要介绍常见的工具,比如在线换器、命令行工具、编程库。针对不同用户的技术水平,提供多种选择。比如Pandoc适合技术用户,而在线工具对新手更友好。 最后,注意事项部分需要提醒用户常见的问题,比如语法差异、扩展语法支持和格式调整。这有助于用户避免换过程中的陷阱,确保结果符合预期。 整个过程中,要保持回答结构清晰,分步骤解释,符合用户要求的“逐步解决问题”。同时要检查是否遵循了系统级指令,比如数学表达式的格式是否正确,使用中文回答,避免使用Markdown格式,确保内容真实可靠。可能还需要确认是否有遗漏的重要细节,比如数学公式在换时的处理,是否需要额外插件或配置,这点可能需要提及,比如使用MathJax或KaTeX来渲染LaTeX公式。 另外,用户可能没有明确提到数学公式的处理,但根据他们的系统指令,可能对这部分特别关注。因此,在介绍MarkdownHTML时,需要提到数学表达式的换方式,说明需要额外的库或配置才能正确显示,避免用户遇到问题。 总结下来,回答的结构应该是:概述、必要性、换规则、工具方法、注意事项,每个部分用简洁的例子和解释,确保用户能一步步理解整个过程,并应用到实际中。</think>MarkdownHTML是将Markdown格式的文本换为HTML(超文本标记语言)的过程。以下从核心概念、换规则、工具方法和注意事项逐步说明: --- ### 一、MarkdownHTML的关系 1. **Markdown** 一种轻量级标记语言,通过简单符号(如`#`、`*`)定义文本格式,适合快速编写结构化内容。 示例: ```markdown # 标题 - 列表项 **加粗文本** ``` 2. **HTML** 网页的基础语言,通过标签(如`<h1>`、`<ul>`)定义内容结构和样式。 示例: ```html <h1>标题</h1> <ul><li>列表项</li></ul> <strong>加粗文本</strong> ``` --- ### 二、换的必要性 - **目标**:将易读易写的Markdown内容换为浏览器可渲染的HTML。 - **应用场景**: - 静态网站生成(如博客、文档) - 内容管理系统(CMS) - 技术文档自动化发布 --- ### 三、基础换规则 Markdown语法与HTML标签的对应关系如下: | Markdown | HTML换结果 | |-------------------|---------------------------------| | `# 标题` | `<h1>标题</h1>` | | `**加粗**` | `<strong>加粗</strong>` | | `- 列表项` | `<ul><li>列表项</li></ul>` | | `[链接](url)` | `<a href="url">链接</a>` | | `![图片](img.jpg)`| `<img src="img.jpg" alt="图片">`| | ```代码块``` | `<pre><code>代码块</code></pre>`| --- ### 四、换工具与方法 #### 1. **在线工具** - **CommonMark Dingus**:支持标准Markdown语法 链接:[https://spec.commonmark.org/dingus/](https://spec.commonmark.org/dingus/) - **MarkdownLivePreview**:实时预览换结果 #### 2. **命令行工具** - **Pandoc**(支持复杂格式): ```bash pandoc input.md -o output.html ``` #### 3. **编程库** - **Python**:`markdown`库 ```python import markdown html = markdown.markdown(md_text) ``` - **JavaScript**:`marked.js`库 ```javascript const html = marked.parse(md_text); ``` --- ### 五、数学表达式的处理 若Markdown包含LaTeX公式(如`$E=mc^2$`),需额外配置: 1. 在HTML中引入MathJax或KaTeX库: ```html <script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> ``` 2. 换后保留公式语法: ```html <p>质能方程:<span class="math">\(E=mc^2\)</span></p> ``` --- ### 六、注意事项 1. **语法差异** - Markdown的缩进和空行可能影响HTML结构。 2. **扩展语法支持** - 表格、流程图等非标准语法需工具或插件支持。 3. **格式调整** - 换后可能需要手动调整CSS样式。 --- 通过以上步骤,Markdown内容可高效换为标准HTML,适用于网页开发、文档发布等场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值