使用 v-md-editor 显示 Markdown 文本并支持复制代码功能

实现方式

  • 安装:yarn add @kangc/v-md-editor
  • 版本:2.3.18以上,之前安装的1.7版本就会报莫名其妙的错!
  • main.ts全局注册,main.tsimport { createApp} from 'vue'一定要放在第一行
  • 官方文档:v-md-editor插件官方文档

  1. 文本显示
    • v-md-editor既可以显示markdown文本,也可以编辑markdown文本
    • v-md-preview只显示,不可编辑。
  2. 主题
    • github:浅色主题,在main.ts中配置
      import githubTheme from '@kangc/v-md-editor/lib/theme/github.js';
      import '@kangc/v-md-editor/lib/theme/style/github.css';
      
      // highlightjs
      import hljs from 'highlight.js';
      
      VMdPreview.use(githubTheme, {
        Hljs: hljs,
      });
      
    • vitepress:深色主题,在main.ts中配置,且在vite.config.ts中导入,完整代码在下面的示例。
      import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
      import '@kangc/v-md-editor/lib/theme/style/vuepress.css';
      import Prism from 'prismjs';
      
      //github:浅色主题;vuepress:深色主题
      VMdPreview.use(vuepressTheme, {
        Prism,
      })
      

下面代码以v-md-preiview显示文本,vitepress深色主题为例

  1. main.ts导入
import { createApp, provide, ref, reactive } from '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 Prism from 'prismjs';

//github:浅色主题;vuepress:深色主题
VMdPreview.use(vuepressTheme, {
  Prism,
})

//代码复制
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());

const app = createApp(App)
app.use(VMdPreview);
  1. vite.config.ts页面配置:plugins配置prismjs
import { defineConfig } from 'vite'
import prismjs from 'vite-plugin-prismjs';

plugins: [
      vue(),
      prismjs({
        languages: 'all',
      })
    ],
  1. markdown.vue页面使用
<template>
  <v-md-preview :text="outputContent" @copy-code-success="handleCopyCodeSuccess"></v-md-preview>
</template>

代码复制功能说明:v-md-editor复制代码官方文档,但是按照官方导入方式,复制功能无效,故加以修改。

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());

官网给出的是VMdPreviewHtml.use(createCopyCodePreview())或者VueMarkdownEditor.use(createCopyCodePlugin()),但是由于我显示文本使用的是v-md-preview,所以导入功能应使用VMdPreview.use(createCopyCodePlugin())

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue 3中,你可以使用`@vuepress/markdown`和`markdown-it`来解析和渲染Markdown语法。以下是一个简单的示例: 1. 首先,使用npm安装依赖项: ``` npm install @vuepress/markdown markdown-it ``` 2. 在Vue文件中,导入`@vuepress/markdown`和`markdown-it`: ```javascript import MarkdownIt from 'markdown-it' import { VueMarkdown } from '@vuepress/markdown' ``` 3. 在Vue组件中,创建一个VueMarkdown实例并将Markdown文本传递给它: ```html <template> <div> <vue-markdown :source="markdownText" /> </div> </template> <script> export default { name: 'MarkdownDemo', data() { return { markdownText: '# Hello, world!' } }, components: { VueMarkdown } } </script> ``` 在上面的示例中,我们将Markdown文本`# Hello, world!`传递给VueMarkdown组件的`source`属性。VueMarkdown组件使用`@vuepress/markdown`和`markdown-it`将Markdown文本解析为HTML,并将结果呈现在页面上。 当然,您可以通过编写自定义插件来扩展Markdown解析器的功能,以便满足您的具体需求。 ### 回答2: 要在Vue3中渲染Markdown语法,可以使用Vue的插值和指令来实现。 首先,安装一个用于解析Markdown语法的库,比如"marked"或"markdown-it"。可以使用npm或者yarn进行安装。 然后,在Vue组件中引入这个库,并在需要显示Markdown内容的地方使用Vue的插值绑定语法,将Markdown文本渲染为HTML。例如: ```vue <template> <div> <div v-html="renderedMarkdown"></div> </div> </template> <script> import marked from 'marked'; export default { data() { return { markdown: '# Hello, World!', renderedMarkdown: '', }; }, mounted() { this.renderedMarkdown = marked(this.markdown); }, }; </script> ``` 上述代码中,首先引入了marked库。然后,在Vue组件的data选项中定义了一个markdown属性,这里放置了待渲染的Markdown文本。同时,定义了一个renderedMarkdown属性,用于存储渲染后的HTML内容。 在mounted生命周期钩子函数中,调用marked库的函数,将this.markdown作为参数传入其中,将解析后的HTML内容赋值给renderedMarkdown。然后,将renderedMarkdown使用v-html指令插入到组件的模板中。 这样,Vue将负责渲染Markdown语法,并将其正确显示为HTML内容。 ### 回答3: Vue 3支持Markdown语法渲染为HTML。实现这个功能需要使用第三方库,比如marked或者markdown-it。 首先,我们需要在项目中安装一个markdown渲染器。可以使用npm或者yarn命令进行安装,如下所示: ```bash npm install marked ``` 接下来,在Vue组件中引入这个markdown渲染器,并将Markdown文本传递给它进行渲染。可以在Vue的computed属性中定义一个方法,使用marked将Markdown文本转换为HTML。代码示例如下: ```javascript <template> <div> <div v-html="renderMarkdown"></div> </div> </template> <script> import marked from 'marked'; export default { data() { return { markdownText: '# Hello, Vue 3!' } }, computed: { renderMarkdown() { return marked(this.markdownText); } } } </script> ``` 在上面的代码中,我们先导入了marked库,并将Markdown文本传递给marked方法进行渲染。然后,我们将渲染后的HTML代码使用v-html指令进行插值展示。 最后,我们在模板中使用了一个div元素,将渲染后的HTML代码通过v-html绑定展示出来。 这样,当我们在markdownText中改变Markdown文本时,Vue会自动触发computed属性中的renderMarkdown方法,将新的Markdown文本转换为HTML并渲染出来。在浏览器中打开页面,就能看到渲染后的Markdown内容了。 总的来说,Vue 3可以通过使用marked或者其他markdown渲染器库来渲染Markdown语法。只需要将Markdown文本传递给渲染器,然后将渲染后的HTML代码展示在模板中即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值