Vue3展示Markdown内容

FAILED
白色玫瑰 程序猿

时间: 2023-07-11 阅读: 1 字数:7432

sjxi.cn
所以需要一个能够将markdown内容转化到页面上展示(就类似于github或者各大博客网站)。个人网站是vue3,vite构建。首先是在 npm上搜索markdown去找寻对应框架,试过其中几个,例如: markdown-loader vue-...

起因

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

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

markdown-loader vue-markdown markdown-it markdown-it-vue @kangc/v-md-editor">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的依赖包。

  1. # 使用 npm
  2. npm i @kangc/v-md-editor@next -S
  3. # 使用 yarn
  4. yarn add @kangc/v-md-editor@next

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

  1. // Vue3必备
  2. import { createApp } from 'vue'
  3. // 预览组件以及样式
  4. import VMdPreview from '@kangc/v-md-editor/lib/preview';
  5. import '@kangc/v-md-editor/lib/style/preview.css';
  6. // VuePress主题以及样式(这里也可以选择github主题)
  7. import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
  8. import '@kangc/v-md-editor/lib/theme/style/vuepress.css';
  9. // Prism
  10. import Prism from 'prismjs';
  11. // 代码高亮
  12. import 'prismjs/components/prism-json';
  13. // 选择使用主题
  14. VMdPreview.use(vuepressTheme, {
  15. Prism,
  16. });
  17. // Vue3必备
  18. const app = createApp(App)
  19. // 引入v-md-editor预览组件
  20. app.use(VMdPreview);
  21. // Vue3必备
  22. app.mount('#app')

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

  1. <template>
  2. <v-md-preview :text="str"></v-md-preview>
  3. </template>
  4. <script>
  5. export default{
  6. data() {
  7. return {
  8. str: '# 标题'
  9. }
  10. }
  11. }
  12. </script>

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

扩展部分插件

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

emoji

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

  1. import VMdPreview from '@kangc/v-md-editor/lib/preview';
  2. import '@kangc/v-md-editor/lib/style/preview.css';
  3. // emoji
  4. import createEmojiPlugin from '@kangc/v-md-editor/lib/plugins/emoji/index';
  5. import '@kangc/v-md-editor/lib/plugins/emoji/emoji.css';
  6. VMdPreview.use(createEmojiPlugin());

Mermaid(流程图等)

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

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

其次在main.js中添加

  1. import VMdPreview from '@kangc/v-md-editor/lib/preview';
  2. import '@kangc/v-md-editor/lib/style/preview.css';
  3. // mermaid
  4. import createMermaidPlugin from '@kangc/v-md-editor/lib/plugins/mermaid/cdn';
  5. import '@kangc/v-md-editor/lib/plugins/mermaid/mermaid.css';
  6. VMdPreview.use(createMermaidPlugin());

使用效果如下:
image-20210616154052433

代码行号

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

  1. import VMdPreview from '@kangc/v-md-editor/lib/preview';
  2. import '@kangc/v-md-editor/lib/style/preview.css';
  3. // 显示代码行数
  4. import createLineNumbertPlugin from '@kangc/v-md-editor/lib/plugins/line-number/index';
  5. VMdPreview.use(createLineNumbertPlugin());

VuePress风格的效果如下:
image-20210616154531243

快速复制代码

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

  1. import VMdPreview from '@kangc/v-md-editor/lib/preview';
  2. import '@kangc/v-md-editor/lib/style/preview.css';
  3. // 快速复制代码
  4. import createCopyCodePlugin from '@kangc/v-md-editor/lib/plugins/copy-code/index';
  5. import '@kangc/v-md-editor/lib/plugins/copy-code/copy-code.css';
  6. VMdPreview.use(createCopyCodePlugin());
  1. 实际使用效果如下,鼠标放置在代码区域,会出现复制按钮:

image-20210616154841411

上述插件代码总和

  1. <!--index.html-->
  2. <script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
  1. // main.js
  2. import { createApp } from 'vue'
  3. import App from './App.vue'
  4. import VMdPreview from '@kangc/v-md-editor/lib/preview';
  5. import '@kangc/v-md-editor/lib/style/preview.css';
  6. import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
  7. import '@kangc/v-md-editor/lib/theme/style/vuepress.css';
  8. import createMermaidPlugin from '@kangc/v-md-editor/lib/plugins/mermaid/cdn';
  9. import createLineNumbertPlugin from '@kangc/v-md-editor/lib/plugins/line-number/index';
  10. import createCopyCodePlugin from '@kangc/v-md-editor/lib/plugins/copy-code/index';
  11. import '@kangc/v-md-editor/lib/plugins/copy-code/copy-code.css';
  12. import createEmojiPlugin from '@kangc/v-md-editor/lib/plugins/emoji/index';
  13. import '@kangc/v-md-editor/lib/plugins/emoji/emoji.css';
  14. // Prism
  15. import Prism from 'prismjs';
  16. // highlight code
  17. import 'prismjs/components/prism-json';
  18. VMdPreview.use(vuepressTheme, {
  19. Prism,
  20. });
  21. // markdown支持流程图
  22. VMdPreview.use(createMermaidPlugin())
  23. // markdown支持显示代码行数
  24. VMdPreview.use(createLineNumbertPlugin())
  25. // markdown支持代码快速复制
  26. VMdPreview.use(createCopyCodePlugin());
  27. // markdown支持emoji
  28. VMdPreview.use(createEmojiPlugin());
  29. const app = createApp(App)
  30. app.use(VMdPreview);
  31. app.mount('#app')

原文地址:https://blog.csdn.net/yml9528/article/details/118058894?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168905674116800227431657%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168905674116800227431657&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-118058894-null-null.142^v88^control_2,239^v2^insert_chatgpt&utm_term=markdown

本文章网址:sjxi.cn/detil/c735d5bf522449b09f4ec596548b613a

打赏作者

本站为非盈利网站,如果您喜欢这篇文章,欢迎支持我们继续运营!

最新评论
当前未登陆哦
登陆后才可评论哦

    湘ICP备2021009447号

    ×

    (穷逼博主)在线接单

    QQ: 1164453243

    邮箱: abcdsjx@126.com

    前端项目代做
    前后端分离
    Python 爬虫脚本
    Java 后台开发
    各种脚本编写
    服务器搭建
    个人博客搭建
    Web 应用开发
    Chrome 插件编写
    Bug 修复