最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3中展示markdown格式文章的三種形式

 更新時間:2025年04月11日 10:50:23   作者:khatung  
這篇文章主要為大家詳細介紹了vue3中展示markdown格式文章的三種形式,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

一、安裝

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

二、三種實現(xiàn)形式

1、編輯器的只讀模式

main.ts文件中配置:

import VMdEditor from '@kangc/v-md-editor';
import '@kangc/v-md-editor/lib/style/base-editor.css';
 
const app = createApp(/*...*/);
 
app.use(VMdEditor);

使用的組件中:

<template>
  <v-md-editor v-model="text" mode="preview"></v-md-editor>
</template>、
//text為要傳入的markdown格式的內(nèi)容

2、預(yù)覽組件

main.ts中配置:

import VMdPreview from '@kangc/v-md-editor/lib/preview';
import '@kangc/v-md-editor/lib/style/preview.css';
 
const app = createApp(/*...*/);
 
app.use(VMdPreview);

使用的組件中:

<template>
  <v-md-preview :text="text"></v-md-preview>
</template>
//text為要傳入的markdown格式的內(nèi)容

3、html預(yù)覽組件

main.ts中配置:

import VMdPreviewHtml from '@kangc/v-md-editor/lib/preview-html';
import '@kangc/v-md-editor/lib/style/preview-html.css';
 
// 引入使用主題的樣式
import '@kangc/v-md-editor/lib/theme/style/vuepress';
 
const app = createApp(/*...*/);
 
app.use(VMdPreviewHtml);

使用的組件中:

<template>
  <!-- preview-class 為主題的樣式類名,例如vuepress就是vuepress-markdown-body -->
  <v-md-preview-html :html="html" preview-class="vuepress-markdown-body"></v-md-preview-html>
</template>

三、實現(xiàn)其他功能

1、設(shè)置外觀

import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
 
import '@kangc/v-md-editor/lib/theme/style/vuepress.css';    
//這個css文件,它與 vuepressTheme 主題相關(guān),定義了主題的顏色、字體、間距等樣式。
 
// 使用 vuepress 主題
VueMarkdownEditor.use(vuepressTheme);

2、對代碼進行語法高亮并顯示代碼語言

import Prism from 'prismjs';
 
VueMarkdownEditor.use({
  Prism,
});

3、代碼塊顯示行號

//main.ts中
 
import VueMarkdownEditor from '@kangc/v-md-editor';
import createLineNumbertPlugin from '@kangc/v-md-editor/lib/plugins/line-number/index';
 
VueMarkdownEditor.use(createLineNumbertPlugin());

4、高亮代碼行 

import VueMarkdownEditor from '@kangc/v-md-editor';
import createHighlightLinesPlugin from '@kangc/v-md-editor/lib/plugins/highlight-lines/index';
import '@kangc/v-md-editor/lib/plugins/highlight-lines/highlight-lines.css';
 
VueMarkdownEditor.use(createHighlightLinesPlugin());

5、快捷復(fù)制代碼

main.ts中配置:

import VueMarkdownEditor from '@kangc/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';
 
VueMarkdownEditor.use(createCopyCodePlugin());

組件中使用:

<template>
  <v-md-editor v-model="text" height="500px" @copy-code-success="handleCopyCodeSuccess" />
</template>
 
//使用@copy-code-success
<script>
export default {
  methods: {
    handleCopyCodeSuccess(code) {
      console.log(code);
    },
  },
};
</script>

四、注意 

如果按正常流程配置后,內(nèi)容出不來,可以選擇自己新開一個項目再操作一遍,如果這個時候是正常的,那可能就是原來的項目配置的版本過低,可以選擇更新一下項目中的各項配置

五、方法補充

Vue 3中如何實現(xiàn)Markdown展示

使用Vue 3中的markdown-it或vue-markdown等庫來實現(xiàn)類似React代碼中的Markdown渲染功能。以下是一個完整的Vue 3實現(xiàn)方案:

步驟一:安裝必要的依賴

npm install markdown-it vue-demi markdown-it-katex markdown-it-breaks markdown-it-mathjax3 markdown-it-highlightjs highlight.js

步驟二:創(chuàng)建Markdown組件

<template>
  <div class="markdown-body" v-html="renderedContent"></div>
</template>

<script setup>
import { ref, computed, onMounted } from 'vue'
import MarkdownIt from 'markdown-it'
import mk from 'markdown-it-katex'
import breaks from 'markdown-it-breaks'
import hljs from 'highlight.js'
import 'highlight.js/styles/atom-one-light.css'
import 'katex/dist/katex.min.css'

const props = defineProps({
  content: {
    type: String,
    required: true
  }
})

// 創(chuàng)建markdown-it實例并配置插件
const md = new MarkdownIt({
  html: true,
  linkify: true,
  typographer: true,
  breaks: true,
  highlight: function (str, lang) {
    if (lang && hljs.getLanguage(lang)) {
      try {
        return `<pre class="hljs"><code>${hljs.highlight(str, { language: lang, ignoreIllegals: true }).value}</code></pre>`;
      } catch (__) {}
    }
    return `<pre class="hljs"><code>${md.utils.escapeHtml(str)}</code></pre>`;
  }
})
.use(mk) // 啟用KaTeX數(shù)學(xué)公式支持
.use(breaks); // 啟用換行支持

// 配置鏈接在新窗口打開
const defaultRender = md.renderer.rules.link_open || function(tokens, idx, options, env, self) {
  return self.renderToken(tokens, idx, options);
};
md.renderer.rules.link_open = function (tokens, idx, options, env, self) {
  tokens[idx].attrPush(['target', '_blank']);
  return defaultRender(tokens, idx, options, env, self);
};

// 計算渲染后的HTML
const renderedContent = computed(() => {
  return md.render(props.content || '');
});
</script>

<style>
.markdown-body {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
  line-height: 1.6;
  padding: 20px;
  color: #24292e;
}

.markdown-body code {
  font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
  background-color: rgba(27, 31, 35, 0.05);
  border-radius: 3px;
  padding: 0.2em 0.4em;
}

.markdown-body pre {
  background-color: #f6f8fa;
  border-radius: 3px;
  padding: 16px;
  overflow: auto;
}

.hljs {
  padding: 0;
  background: transparent;
}
</style>

步驟三:使用組件

<template>
  <div>
    <h1>Markdown 預(yù)覽</h1>
    <MarkdownView :content="markdownContent" />
  </div>
</template>

<script setup>
import MarkdownView from '@/components/MarkdownView.vue'
import { ref } from 'vue'

const markdownContent = ref(`
# 標題

這是一段普通文本

## 代碼示例
\`\`\`javascript
const hello = 'world';
console.log(hello);
\`\`\`

## 數(shù)學(xué)公式
$E = mc^2$

## 表格
| 姓名 | 年齡 |
| ---- | ---- |
| 張三 | 20   |
| 李四 | 25   |
`)
</script>

功能對照表

以下是React示例和Vue實現(xiàn)的功能對照:

React功能Vue實現(xiàn)方式
ReactMarkdownmarkdown-it
remark-mathmarkdown-it-katex
remark-breaksmarkdown-it-breaks
rehype-katexmarkdown-it-katex (內(nèi)置支持)
remark-gfmmarkdown-it (內(nèi)置支持GFM)
SyntaxHighlighterhighlight.js

補充說明

1.功能:

  • Markdown渲染
  • 數(shù)學(xué)公式支持
  • 代碼高亮
  • 表格支持
  • 自動鏈接
  • 在新窗口打開鏈接

2.如果需要更多功能,可以添加其他markdown-it插件,例如:

npm install markdown-it-emoji markdown-it-sub markdown-it-sup markdown-it-footnote

3.要實現(xiàn)與GitHub樣式一致的顯示效果,可以添加:

npm install github-markdown-css

4.然后在main.js中導(dǎo)入:

import 'github-markdown-css/github-markdown.css'

到此這篇關(guān)于vue3中展示markdown格式文章的三種形式的文章就介紹到這了,更多相關(guān)vue3展示markdown內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue vantUI tab切換時 list組件不觸發(fā)load事件的問題及解決方法

    vue vantUI tab切換時 list組件不觸發(fā)load事件的問題及解決方法

    這篇文章主要介紹了vue vantUI tab切換時 list組件不觸發(fā)load事件的解決辦法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • vue?+elementui?項目登錄通過不同賬號切換側(cè)邊欄菜單的顏色

    vue?+elementui?項目登錄通過不同賬號切換側(cè)邊欄菜單的顏色

    這篇文章主要介紹了vue?+elementui?項目登錄通過不同賬號切換側(cè)邊欄菜單的顏色,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • vue3如何使用setup代替created

    vue3如何使用setup代替created

    Vue3中的setup是一個新的生命周期函數(shù),它可以用來代替組件中的 data和一些生命周期函數(shù)(如created和beforeMount),這篇文章主要介紹了vue3如何使用setup代替created的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • vue實現(xiàn)表格過濾功能

    vue實現(xiàn)表格過濾功能

    這篇文章主要為大家詳細介紹了vue實現(xiàn)表格過濾功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Vue實現(xiàn)前后端完全分離的項目實戰(zhàn)

    Vue實現(xiàn)前后端完全分離的項目實戰(zhàn)

    本文主要介紹了Vue實現(xiàn)前后端完全分離的項目實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Vue路由守衛(wèi)案例代碼

    Vue路由守衛(wèi)案例代碼

    在Vue中,路由守衛(wèi)分為三種:全局路由守衛(wèi)、獨享路由守衛(wèi)以及組件內(nèi)路由守衛(wèi),本文重點介紹Vue路由守衛(wèi)案例代碼,需要的朋友可以參考下
    2023-02-02
  • VUE中Non-Props屬性的使用

    VUE中Non-Props屬性的使用

    本文主要介紹了VUE中Non-Props屬性的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 詳解關(guān)于表格合并span-method方法的補充(表格數(shù)據(jù)由后臺動態(tài)返回)

    詳解關(guān)于表格合并span-method方法的補充(表格數(shù)據(jù)由后臺動態(tài)返回)

    這篇文章主要介紹了詳解關(guān)于表格合并span-method方法的補充(表格數(shù)據(jù)由后臺動態(tài)返回) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • vue實現(xiàn)分頁加載效果

    vue實現(xiàn)分頁加載效果

    這篇文章主要為大家詳細介紹了vue實現(xiàn)分頁加載效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 解決vue3項目中el-menu不兼容SSR問題

    解決vue3項目中el-menu不兼容SSR問題

    這篇文章主要介紹了解決vue3項目中el-menu不兼容SSR問題,需要的朋友可以參考下
    2023-12-12

最新評論

太湖县| 五大连池市| 嘉荫县| 牟定县| 九江县| 巨野县| 井冈山市| 金川县| 海盐县| 澎湖县| 水城县| 汉沽区| 秭归县| 马尔康县| 五家渠市| 五华县| 彩票| 即墨市| 项城市| 琼结县| 合阳县| 东港市| 太仓市| 宜都市| 辽阳市| 乡城县| 柳州市| 孝义市| 西吉县| 南部县| 土默特左旗| 宁强县| 洛宁县| 巴林右旗| 黔东| 于田县| 修武县| 建平县| 全州县| 白银市| 株洲市|