Vue3展示Markdown内容

2023-05-16

起因

想要搭建一个个人网站,然后在网站上展示个人信息以及平时学习或者使用框架的一些内容。所以需要一个能够将markdown内容转化到页面上展示(就类似于github或者各大博客网站)。个人网站是vue3,vite构建。首先是在

npm上搜索markdown去找寻对应框架,试过其中几个,例如:

  • markdown-loader
  • vue-markdown
  • markdown-it
  • markdown-it-vue
  • v-md-editor

markdown-loader

搜索markdown首先出来的就是这个,然后打开看了下webpack2+,个人就没有去试用。

vue-markdown

这个框架单单看首页支持的东西比较全,但是上个版本在四年前,我怕它不支持vue3,所以也没有试用。

markdown-it

这个框架相较于前两个首先有个

live demo好评👍,但是看了下live demo,个人不是很喜欢这个风格,就列入备选框架中,然后接着看下一个。

markdown-it-vue

这个框架其实跟之前那个框架差不多,上来也首先是一个

Demo online,但是实际展现风格跟之前那个差不多。

v-md-editor

这个框架打开看到则是最舒服的一个,上来不仅有个线上demo,还有中文文档,好评。其次是文档中明确描写了支持vue3,那就决定是他了。

开始

要在Vue3中使用,首先安装Vue3的依赖包。

# 使用 npm
npm i @kangc/v-md-editor@next -S

# 使用 yarn
yarn add @kangc/v-md-editor@next

然后官方给出的默认例子是编辑器,但是我们这边作为一个展现数据的页面,并不需要编辑功能,所以我们需要在main.js/main.ts中做一些更改

// Vue3必备
import { createApp } from 'vue'
// 预览组件以及样式
import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
// VuePress主题以及样式(这里也可以选择github主题)
import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
import '@kangc/v-md-editor/lib/theme/style/vuepress.css';

// Prism
import Prism from 'prismjs';
// 代码高亮
import 'prismjs/components/prism-json';
// 选择使用主题
VMdPreview.use(vuepressTheme, {
  Prism,
});

// Vue3必备
const app = createApp(App)
// 引入v-md-editor预览组件
app.use(VMdPreview);
// Vue3必备
app.mount('#app')

main.js/main.ts页面配置完成后,即可在对应页面使用

<template>
	<v-md-preview :text="str"></v-md-preview>
</template>

<script>
    export default{
        data() {
            return {
                str: '# 标题'
            }
        }
    }
</script>

这样一个md预览页面就算是完成了,可以尽情的开始书写了。

扩展部分插件

因为个人平常写markdown的工具是typora,所以选用了部分typora支持的插件

emoji

单纯的文字看着其实很单调,如果其中穿插一些表情😀,那将绝杀❤️。

import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
// emoji
import createEmojiPlugin from '@kangc/v-md-editor/lib/plugins/emoji/index';
import '@kangc/v-md-editor/lib/plugins/emoji/emoji.css';

VMdPreview.use(createEmojiPlugin());

Mermaid(流程图等)

首先要在根目录的index.html中引入

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

其次在main.js中添加

import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
// mermaid
import createMermaidPlugin from '@kangc/v-md-editor/lib/plugins/mermaid/cdn';
import '@kangc/v-md-editor/lib/plugins/mermaid/mermaid.css';

VMdPreview.use(createMermaidPlugin());

使用效果如下:

image-20210616154052433

代码行号

有了代码行号显示,看代码都更清晰了。

import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
// 显示代码行数
import createLineNumbertPlugin from '@kangc/v-md-editor/lib/plugins/line-number/index';

VMdPreview.use(createLineNumbertPlugin());

VuePress风格的效果如下:

image-20210616154531243

快速复制代码

这个功能不可谓不实用,方便自己查询手册也方便他人。

import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
// 快速复制代码
import createCopyCodePlugin from '@kangc/v-md-editor/lib/plugins/copy-code/index';
import '@kangc/v-md-editor/lib/plugins/copy-code/copy-code.css';

VMdPreview.use(createCopyCodePlugin());
实际使用效果如下,鼠标放置在代码区域,会出现复制按钮:

image-20210616154841411

上述插件代码总和

<!--index.html-->
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
// main.js
import { createApp } from 'vue'
import App from './App.vue'
import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
import '@kangc/v-md-editor/lib/theme/style/vuepress.css';
import createMermaidPlugin from '@kangc/v-md-editor/lib/plugins/mermaid/cdn';
import createLineNumbertPlugin from '@kangc/v-md-editor/lib/plugins/line-number/index';
import createCopyCodePlugin from '@kangc/v-md-editor/lib/plugins/copy-code/index';
import '@kangc/v-md-editor/lib/plugins/copy-code/copy-code.css';
import createEmojiPlugin from '@kangc/v-md-editor/lib/plugins/emoji/index';
import '@kangc/v-md-editor/lib/plugins/emoji/emoji.css';

// Prism
import Prism from 'prismjs';
// highlight code
import 'prismjs/components/prism-json';

VMdPreview.use(vuepressTheme, {
  Prism,
});
// markdown支持流程图
VMdPreview.use(createMermaidPlugin())
// markdown支持显示代码行数
VMdPreview.use(createLineNumbertPlugin())
// markdown支持代码快速复制
VMdPreview.use(createCopyCodePlugin());
// markdown支持emoji
VMdPreview.use(createEmojiPlugin());

const app = createApp(App)
app.use(VMdPreview);

app.mount('#app')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue3展示Markdown内容 的相关文章

  • 如何将 package.json 中的所有 npm 依赖项记录到 README.md 中

    我想记录所有 npmdevDependencies and dependencies中描述的package json文件到README md文件在同一个项目中 以下属性值得关注name description and version 当然
  • 如何将 GitHub wiki 存储为源代码的一部分

    GitHub 以及许多git服务器 例如 GitLab 提供项目级 wiki 其中通常包含 markdown md 文件被存储并形成 好吧 你的项目的wiki 这将是so cool如果有一种方法可以将您的 wiki 存储为主项目源代码的一部
  • Markdown 中的 RTL

    是否有任何现有的 Markdown 插件规范包含对 RTL 语言的支持 我希望是这样的 This paragraph is left to right lt This paragraph is right to left 或者其他什么 我可
  • 是否有 Swift 代码的 Github markdown 语言标识符?

    我在用着https jbt github io markdown editor https jbt github io markdown editor在线文档工具 我想知道是否有一个标识符可以识别 swift 语法元素 谢谢 swift s
  • 如何在在线编辑器中查看在线 Markdown 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个在线 Markdown 文档 例如 www example com README md 我想要
  • 带有 Pandoc 的内联 CSS

    如果在某处记录了以编程方式实现此目的的简单方法 不是通过在浏览器字段中复制 粘贴并单击按钮进行转换 我深表歉意 在我的搜索和阅读中我找不到它 我想以编程方式将 Markdown 和 CSS 文件转换为听起来可能称为 内联 CSS 的文件 例
  • Markdown 所见即所得编辑器和预览在同一文本区域中[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我寻找一个编辑器来编写 Markdown 语法并在同一文本区域中预览 例如引导所见即所得HTML5 ht
  • 关于:链接(Markdown 页面)上的blank#blocked

    在 Markdown 页面中 Microsoft TFS Wiki 我尝试创建 A 标签file link a href file txt a 点击 Chrome 后 我得到了 about blank blocked 这不是 Chrome
  • 如何在 VS TextMateRules 中将标记设为粗体+斜体

    在 Visual Studio Code 中 我编辑 Markdown 文件 在编辑器中标记的文本 bold 被渲染bold以及标记的那个 italic 呈现在italic 但文字标记 bold and italic 简单地呈现为itali
  • yaml / yaml 多行转义序列中的 Markdown?

    是否可以在 yaml 中存储未转义的 Markdown 文档 我测试过 key markdown text block that could have any combination of line breaks gt etc etc 这是
  • 如何在 IPython 中设置 markdown 链接的基本 url?

    我很高兴地设置 在我的 IPython html 笔记本 IPython 0 12 的 Markdown 单元中 以便能够将链接缩写为 wiki documentation doc html 在 Markdown 单元格中 但这使得保存笔记
  • 在`rmarkdown`中,如何在句子中添加图标?

    In rmarkdown 如何在句子中添加图标 例如如下 如何添加markdown icon单词 Markdown 和 is 之间 有一个很好的 R 包 可以轻松下载 RMarkdown 文档并将图标添加到其中 icons https gi
  • 从 markdown 转换为 pandoc 时的 \newcommand 环境

    我使用 ipython 笔记本输入数学 然后转换为乳胶 让 mathjax 理解 newcommand 我必须把它放进去 例如 newcommand cl operatorname cl 与 mathjax 配合良好 问题是 当我使用 pa
  • Pandoc Markdown 分页符

    最近我开始使用 Pandoc markdown 它似乎是 LaTeX 的一个很好的替代品 因为我的文档没有很多数学公式 而且我没有任何使用 LaTeX 的经验 再加上不到 2 周的提交截止日期 这使它成为一个很好的解决方案 我无法解决的一件
  • 我可以将更大的字体文本添加到 https://portal.azure.com 仪表板上的 Markdown 小部件吗?

    In https portal azure com https portal azure com我想制作一个带有大标签的仪表板 我们的想法是 我们可以在大电视上获取统计数据 这样我们就可以一目了然地看到我们的服务状态 大厂牌会成功的更容易消
  • 内容丰富的 api markdown 转换为 HTML

    有没有什么简单的方法可以将 Markdown 文本从 Contentful api 转换为 html 代码以显示在 html 页面上 我尝试过使用 pagedown 和一些类似的技术 但似乎没有一个对我有用 我是 Contentful 的客
  • Github Markdown 从存储库文件加载代码块

    我想在我的中添加一个 JSON 代码块README md并且需要从repo文件加载代码块 例如 可以执行以下操作吗 json lt
  • 表格内的 Markdown 列表

    根据标题 是否可以在 Markdown 中将列表放入表格中 我试图搜索它但找不到任何东西 一个表是这样的 Fruit Color Apples Red Pears Green 和一个类似的列表 清单项目 1 清单项目 2 You can 在
  • 在 Markdown 中添加文本和图像之间的空格

    在 Markdown 中 您将图像添加为 myimg link 现在 我可以使用以下属性轻松更改所述图像的大小和位置 myimg link height 75px width 300px align left 我怎样才能使图像和文本之间也有
  • Prettier 不断用下划线替换星号字符

    我正在尝试在 Visual Studio Code 中编写一些 Markdown 文本 每当我编写以下内容时 some text 我保存文件后它就会被替换为 some text 我将其范围缩小为由 Prettier 扩展引起的 我尝试寻找一

随机推荐

  • QT 制作图片旋转、反转

    参考链接 xff1a QGraphicsPixmapItem QPropertyAnimation QTransform 自定义图片控件旋转 缩放 图形视图框架 三 xff09 码农家园 codenong com 代码 xff1a 工程文件
  • QT资源文件(.qrc)的编写与应用

    qrc文件 xff0c 这个是Qt的资源文件 xff0c 如果在pro文件中不包含的话 xff0c 在编译的时候会提示找不到相应资源的错误 xff1b 下面说一下手动修改pro和编写qrc文件的方法 我们直接在命令行下执行qmake pro
  • linux 查看硬盘内存使用情况

    sudo rm rf home wukai local share Trash 清空回收站
  • 耗时统计、日志

    linux struct timeval t1 t2 double timeuse gettimeofday amp t1 NULL foo gettimeofday amp t2 NULL timeuse 61 t2 tv sec t1
  • Ubuntu磁盘分区

    磁盘格式化 xff1a 低级格式化 xff1a 空白磁盘划分柱面 分区以及磁道 高级格式化 xff1a 低级格式化后的逻辑上的结构化 即建立文件系统 磁盘设备命名 xff1a IDE设备由内部设备连接来区分 xff0c 最多连接4个设备 x
  • 流量变现的10种方式

    在互联网飞速发展的今天 xff0c 流量就等于金钱 xff0c 流量越大意味着赚的钱越多 流量如何变现呢 xff1f 以下10种方式可供参考 xff1a 打造个人品牌变现 xff1a 通过写文章或发布短视频 xff0c 提高自己的知名度 x
  • ubuntu 下 .7z 文件解压时,子文件夹内的内容被解压到根文件夹问题

    7z e log4cplus 2 0 8 7z o home wukai Documents log4cplus 参数使用 e 时 xff0c 会导致子文件夹内的内容被解压到根文件夹 xff0c 导致子文件夹没东西 xff0c 且覆盖了根文
  • configure: error: cannot find sources (src/logger.cxx) in . or ..

    配置的时候 xff0c 找不到文件 查看下src文件夹下是不是没有这个文件 xff0c 如果没有 xff0c 可能性有一下两个 1 解压的时候出错 xff0c 导致此文件被解压到其他文件夹 xff1b xff08 参考https mp cs
  • windows下python下载及安装

    下载python安装包 进入python官网 xff1a https www python org 鼠标移动到 Downloads gt 34 Windows 34 上 xff0c 可以看到最新版本是3 11 3版本 点击 Windows
  • 修改环境变量

    点击 windows 按钮 xff0c 输入 环境 xff0c 点击右侧的 编辑系统环境变量 点击 环境变量 按钮 按如下顺序将python添加到环境变量中 然后再把所有弹框的确定按钮都点下
  • windows下创建python文件

    1 打开python IDLE 按下 windows 按钮 xff0c 输入python xff0c 单击 IDLE Python 3 9 64 bit 点击File gt New File 新文件未命令 xff0c 内容空 随意编辑代码
  • python代码注释

    在python中 xff0c 存在三种类型的注释 xff1a 单行注释 多行注释和中文声明注释 1 单行注释 xff08 在需要注释的内容前面加 xff09 注释内容 2 多行注释 xff08 将要注释的内容包含在 或者 内 xff09 3
  • python3.9.13 IDLE设置缩进值

    Options gt 34 Configure IDLE 34 gt 34 Windows 34 Indent spaces 即是缩进值
  • unindent does not match any outer indentation level

    python运行时 xff0c 报错 unindent does not match any outer indentation level 有某行的缩进和其他行不匹配
  • python分行

    方式一 xff1a print 34 123 34 34 456 34 方式二 xff1a print 34 wer asd 34 输出 123456 werasd
  • python命名规范

    1 模块名 xff1a 尽量短小 xff0c 全部小写 xff0c 可以使用下划线分隔多个字母 如 xff1a func 1 func 2 2 类名 xff1a 采用单词首字母大写的方式 如 xff1a Student Teacher 3
  • YOLOv5之autoanchor看这一篇就够了

    简单粗暴 xff0c 废话也不罗嗦了 xff0c 学习目的就是解决下面三个问题 xff0c 1 默认anchor t设置为4 xff0c 这个参数如何调整 xff1f 有没有必要调整 xff1f xff08 首先网上很多说这个参数是长宽比是
  • 反转一个长字符串中的子字符串

    第一次练习写博客 xff0c 记录下自己感觉满意的成果吧 include lt stdio h gt include lt string h gt bool findPosition char sur char dst int amp st
  • c中全局变量,全局结构体使用

    1 在A 中定义的函数 xff0c 如何在 B 中调用 xff1f 如果有头文件 xff0c 在头文件中声明 xff0c 在B 文件中 include 头文件就可以了 如果是在 c 文件中声明的 xff0c 在 B 中加 extent 声明
  • Vue3展示Markdown内容

    起因 想要搭建一个个人网站 xff0c 然后在网站上展示个人信息以及平时学习或者使用框架的一些内容 所以需要一个能够将markdown内容转化到页面上展示 xff08 就类似于github或者各大博客网站 xff09 个人网站是vue3 x