marked库(高效将 Markdown 转换为 HTML 的利器)

文章目录

  • 前言
  • 使用
    • 基本使用
    • 自定义渲染器
      • 例子
  • 代码高亮

前言

最近尝试了一下通过星火大模型将ai引入到项目上,但是ai返回的数据可以显而易见的发现是markedown语法的,那么就需要一个工具,将在这里插入图片描述类似这种的格式转换为markdown格式
Marked 是一个用 JavaScript 编写的开源库,专注于把 Markdown 格式的文本解析并转换为 HTML。它广泛应用于各类 Web 应用程序、文档生成工具、博客系统等场景中,实现 Markdown 到 HTML 的顺畅转换

然后我就搜索到了marked这个包,

使用

基本使用

官网
安装
npm install marked

每个页面引入如果是marked 那么所有页面的设置将会通用

import { marked } from 'marked';
// or const { marked } = require('marked');const html = marked.parse('# Marked in Node.js\n\nRendered by **marked**.');

如果想要创建独立的marked

import { Marked } from 'marked';
const marked = new Marked([options, extension, ...]);

使用

//markdownString:要解析的markdown,必须为字符串
//options:marked.js的配置
marked.parse(markdownString [,options])

options
在这里插入图片描述

自定义渲染器

自定义渲染器可以把解析后形成的数据再次进行二次修改

const renderer = new marked.Renderer();

渲染器方法:
在这里插入图片描述
在这里插入图片描述

例子

renderer.heading = (data) => {const { raw, text, depth } = data;console.log(text, depth);console.log()// 将一级标题转换为h1标签if (depth === 1) {return `<h1 class="hClass"> ${text}</h1>`;} else if (depth === 2) {return `<h2 class="hClass">${text}</h2>`;} else if (depth === 3) {return `<h3 class="hClass">${text}</h3>`;} else if (depth === 4) {return `<h4 class="hClass">${text}</h4>`;} else if (depth === 5) {return `<h5 class="hClass">${text}</h5>`;} else if (depth === 6) {return `<h6 class="hClass">${text}</h6>`;}
};
renderer.html = (html) => {console.log(html);const { text } = html;return `<div class="htmlClass">${text}</div>`;
};
marked.use(renderer);

在这里插入图片描述
当渲染到页面上时
在这里插入图片描述

代码高亮

在markedown中是不可避免有代码块的,但是markedown返回的数据并不会想当然的带上样式,我们需要自己进行设置

npm i highlight.js
npm i github-markdown-css

在main.js中写一个全局自定义指令

import hljs from "highlight.js";
import "github-markdown-css";
import "highlight.js/styles/atom-one-dark.css";Vue.directive("highlight", function (el) {let blocks = el.querySelectorAll("pre code");blocks.forEach((block) => {hljs.highlightBlock(block);});
});

在这里插入图片描述

如果想要改变一些样式的话 定义一个markdown样式 这里我叫做 markedown-body

.markdown-body {font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,Microsoft YaHei, Arial, sans-serif !important;line-height: 20px;& ul {list-style: none;padding-left: 20px;}color: #000 !important;p {margin-top: 10px !important;margin-bottom: 10px !important;}pre {padding: 5px !important;margin-bottom: 10px !important;}.hljs {color: #abb2bf;background: #282c34;}.hClass {//出现#则不转换为h1等标签font-size: 16px;color: #8a2328;font-weight: 600;margin: 10px 0;}/* 只改变普通 code 标签的颜色,不影响 pre 中的 code */code:not(pre) {color: red;font-weight: 600;background-color: rgba(175, 184, 193, 0.3);margin: 0 5px;}a {color: #1d71f7 !important;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/76293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用deepseek大模型时智能嵌入函数

DeepSeek-R1 当前炙手可热,以其强大的自然语言处理和推理能力而广受赞誉。饶是如此,却并不原生支持函数调用(function_call),这是开发过程中不可或缺的一部分。虽有第三方调校的模型支持,然终非官方自带,还需假以时日。本文虽然简短,应该是全网写得最通透的了吧。 …

SQLMesh系列教程:基于指标构建一致的分析语义层应用实践

本文深入探讨SQLMesh指标框架的核心概念、定义方法及应用场景。通过统一的语义层管理&#xff0c;SQLMesh解决了数据分析中指标定义不一致的痛点&#xff0c;实现了跨团队协作的数据一致性。文章包含指标定义语法详解、自动表连接机制解析、派生指标构建方法&#xff0c;并通过…

基于OpenCV+MediaPipe手部追踪

一、技术栈 1. OpenCV&#xff08;Open Source Computer Vision Library&#xff09; 性质&#xff1a;开源计算机视觉库&#xff08;Library&#xff09; 主要功能&#xff1a; 图像/视频的基础处理&#xff08;读取、裁剪、滤波、色彩转换等&#xff09; 特征检测&#xf…

机器学习ML极简指南

机器学习是现代AI的核心&#xff0c;从推荐系统到自动驾驶&#xff0c;无处不在。但每个智能应用背后&#xff0c;都离不开那些奠基性的模型。本文用最简练的方式拆解核心机器学习模型&#xff0c;助你面试时对答如流&#xff0c;稳如老G。 线性回归 线性回归试图通过"最…

装饰器模式:如何用Java打扮一个对象?

引言装饰器模式具体实例共有接口类具体被装饰类抽象装饰器类具体装饰器类 测试装饰器模式的实际应用Java I/O 体系游戏开发中的角色装备系统 总结 引言 在生活中&#xff0c;我们都知道一句话&#xff0c;“人靠衣装马靠鞍”&#xff0c;如果想要让自己在别人眼里看起来更加好…

【Easylive】HikariCP 介绍

【Easylive】项目常见问题解答&#xff08;自用&持续更新中…&#xff09; 汇总版 HikariCP 是目前 Java 生态中最快、最轻量级的高性能 JDBC 连接池&#xff0c;被 Spring Boot 2.x 及更高版本选为 默认数据库连接池。它的名字来源于日语“光”&#xff08;Hikari&#xf…

清晰易懂的Cursor实现AI编程从安装到实战TodoList开发

一、Cursor简介与安装部署 什么是Cursor&#xff1f; Cursor是一款基于AI的智能代码编辑器&#xff0c;它集成了强大的AI编程助手功能&#xff0c;能够通过自然语言交互帮助开发者生成、优化和调试代码。与传统的代码编辑器不同&#xff0c;Cursor可以理解你的编程意图&#…

【Django】教程-2-前端-目录结构介绍

【Django】教程-1-安装创建项目目录结构介绍 3. 前端文件配置 3.1 目录介绍 在app下创建static文件夹, 是根据setting中的配置来的 STATIC_URL ‘static/’ templates目录&#xff0c;编写HTML模板&#xff08;含有模板语法&#xff0c;继承&#xff0c;{% static ‘xx’ …

注意!ChatGPT 全新 AI 图像功能延迟对免费用户开放

2025 年 3 月 25 日&#xff0c;OpenAI 正式宣布在 ChatGPT 中推出基于 GPT-4o 模型的全新原生图像生成功能。 这一功能允许用户通过对话生成和编辑图像&#xff0c;支持从写实风格到插图风格的多种形式。OpenAI 首席执行官萨姆・奥特曼&#xff08;Sam Altman&#xff09;在社…

优化webpack打包体积思路

Webpack 打包过大的问题通常会导致页面加载变慢&#xff0c;影响用户体验。可以从代码优化、依赖优化、构建优化等多个角度入手来减少打包体积&#xff1a; 代码优化 &#xff08;1&#xff09;按需加载&#xff08;代码拆分&#xff09; ① 路由懒加载 如果你的项目使用 Vu…

HarmonyOS Next~鸿蒙元服务开发指南:核心功能与实践

HarmonyOS Next&#xff5e;鸿蒙元服务开发指南&#xff1a;核心功能与实践 一、元服务核心概念 原子化服务定义 元服务&#xff08;原子服务&#xff09;是鸿蒙系统的核心架构单元&#xff0c;具备独立业务能力的轻量化服务模块&#xff0c;支持免安装、跨设备调用和智能分发…

git错误:fatal: detected dubious ownership in repository at xxxxxx

1、报错说明 这个错误通常是由于Git仓库目录的拥有者或权限问题引起的。Git检测到仓库目录的所有权可能存在不一致或不安全的情况。 通常导致此报错的可能原因&#xff1a; &#xff08;1&#xff09;文件或目录的拥有者不一致&#xff1a; 仓库目录中的某些文件或子目录可能…

【计算机网络】OSI七层模型完全指南:从比特流到应用交互的逐层拆解

OSI模型 导读一、概念二、模型层次结构2.1 物理层&#xff08;Physical Layer&#xff09;2.2 数据链路层&#xff08;Data Link Layer&#xff09;​2.3 ​网络层&#xff08;Network Layer&#xff09;​2.4 ​传输层&#xff08;Transport Layer&#xff09;​2.5 ​会话层&…

零基础被迫参加CTF比赛?CTF高频解题技巧与经验分享

CTF&#xff08;Capture The Flag&#xff09;比赛中的高频解题技巧通常涵盖了以下几类技术&#xff0c;涉及从逆向工程、二进制漏洞利用到Web安全、密码学等多个领域。以下是一些高频解题技巧&#xff1a; 1. 逆向工程&#xff08;Reverse Engineering&#xff09; 静态分析&a…

markdown 文件转 word

将 Markdown 文件转换为 Word 文档&#xff0c;可以使用多种方法。以下是几种常见的方法&#xff1a; 方法1&#xff1a;使用在线转换工具 有许多在线服务可以将 Markdown 文件转换为 Word 文档。例如&#xff1a; Pandoc - 一个非常流行的命令行工具&#xff0c;也可以用来转…

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】【思路篇】A题解题全流程(持续更新)

【第十三届“泰迪杯”数据挖掘挑战赛】【2025泰迪杯】A题解题全流程-思路&#xff08;持续更新&#xff09; 写在前面&#xff1a; 1、A题、C题将会持续更新&#xff0c;陆续更新发布文章 2、赛题交流咨询Q群&#xff1a;1037590285 3、全家桶依旧包含&#xff1a; 代码、…

T11 TensorFlow入门实战——优化器对比实验

&#x1f368; 本文為&#x1f517;365天深度學習訓練營 中的學習紀錄博客&#x1f356; 原作者&#xff1a;K同学啊 | 接輔導、項目定制 一、前期准备 1. 导入数据 # Import the required libraries import pathlib import matplotlib.pyplot as plt import tensorflow as t…

Docker部署sprintboot后端项目

创建Docker网络 docker network create icjs 部署Redis docker run -d \--network icjs \--name redis \-p 6379:6379 \redis:latest数据持久化 docker run --restartalways --network icjs -p 6379:6379 --name redis -v /opt/docker/redis/redis.conf:/etc/redis/redis.c…

01小游戏

问题描述 小明得到了一个长度为 nn 的字符串 ss &#xff0c;该字符串都是由数字 00 和 11 组成&#xff0c;并且下标从 11 开始&#xff0c;小明现在需要对这个字符串进行 qq 次操作&#xff0c;每次操作包含以下两种操作之一&#xff1a; 操作 11 &#xff1a;小明查询该字符…

Androidstudio开发,实现商品分类

文章目录 1. 功能需求2. 代码实现过程1. 编写布局文件2. 创建商品分类&#xff08;Adapter&#xff09;适配器3. 实现商品分类Activity4. 在res/values/ 下新建 array.xml &#xff0c;用于添加商品分类数据5. 效果演示 6. 关于作者其它项目视频教程介绍 1. 功能需求 显示商品分…