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

使用Vue指令實(shí)現(xiàn)Markdown渲染和代碼高亮

 更新時(shí)間:2023年09月21日 08:49:02   作者:ErvinHowell  
在前端開發(fā)中,我們經(jīng)常需要將Markdown格式的文本渲染成HTML并展示在頁面上,同時(shí)還希望能夠?qū)Υa塊進(jìn)行高亮顯示,今天我將分享一段代碼,通過Vue指令實(shí)現(xiàn)了這個(gè)功能,需要的朋友可以參考下

在前端開發(fā)中,我們經(jīng)常需要將Markdown格式的文本渲染成HTML并展示在頁面上,同時(shí)還希望能夠?qū)Υa塊進(jìn)行高亮顯示。今天我將分享一段代碼,通過Vue指令實(shí)現(xiàn)了這個(gè)功能。

首先,你需要安裝一些依賴。在你的項(xiàng)目中執(zhí)行以下命令:

pnpm add highlight.js marked @types/marked -D

接下來,我們來看一下具體的代碼實(shí)現(xiàn)。

main.ts文件中,我們需要注冊一個(gè)全局的Vue指令。代碼如下:

import { markedDirective } from './path/to/markedDirective'
app.directive('marked', markedDirective)

在Vue組件中,你可以使用v-marked指令來渲染Markdown文本,并對代碼塊進(jìn)行高亮顯示。示例代碼如下:

<template>
  <div v-marked:hl="code"></div>
</template>
<script setup lang="ts">
import 'highlight.js/styles/atom-one-dark.css'
import code from '@/config/code.md?raw'
</script>

上面的示例代碼中,我們導(dǎo)入了highlight.js的樣式文件,并且使用code.md文件中的Markdown文本作為示例。

接下來,讓我們來看一下具體的實(shí)現(xiàn)代碼。

首先,我們需要導(dǎo)入highlight.jsmarked模塊,代碼如下:

import hljs from 'highlight.js'
import { marked } from 'marked'
import { Directive, DirectiveHook, nextTick } from 'vue'

然后,我們需要?jiǎng)?chuàng)建一個(gè)marked的渲染器,并設(shè)置一些選項(xiàng),代碼如下:

const render = new marked.Renderer()
marked.setOptions({
  renderer: render,
  gfm: true,
  pedantic: false
})

在Vue指令的具體實(shí)現(xiàn)中,我們定義了一個(gè)formatValue函數(shù),該函數(shù)用于將Markdown文本渲染成HTML,并對代碼塊進(jìn)行高亮顯示。代碼如下:

const formatValue: DirectiveHook = async (el, binding) => {
  const html = marked(binding?.value ?? '')
  el.innerHTML = html
  await nextTick()
  if (binding.arg === 'hl') {
    const blocks = el.querySelectorAll('pre code')
    blocks.forEach((block: any) => {
      hljs.highlightBlock(block)
    })
  }
}

最后,我們將formatValue函數(shù)作為Vue指令的mountedupdated鉤子的回調(diào)函數(shù)。這樣,每當(dāng)指令所綁定的值發(fā)生變化時(shí),都會重新渲染Markdown文本并對代碼塊進(jìn)行高亮顯示。代碼如下:

export const markedDirective: Directive = {
  mounted: formatValue,
  updated: formatValue
}

到此為止,我們已經(jīng)完成了整個(gè)功能的實(shí)現(xiàn)。

總結(jié)一下,通過上述代碼,我們可以在Vue項(xiàng)目中使用v-marked指令將Markdown文本渲染成HTML,并對其中的代碼塊進(jìn)行高亮顯示。這對于展示文檔、博客等場景非常有用。

以上就是使用Vue指令實(shí)現(xiàn)Markdown渲染和代碼高亮的詳細(xì)內(nèi)容,更多關(guān)于Vue Markdown渲染和代碼高亮的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于Vue-cli快速搭建項(xiàng)目的完整步驟

    基于Vue-cli快速搭建項(xiàng)目的完整步驟

    這篇文章主要給大家介紹了關(guān)于如何基于Vue-cli快速搭建項(xiàng)目的完整步驟,文中通過示例代碼以及圖片將搭建的步驟一步步介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Vue3 中 Lottie動畫庫的使用指南

    Vue3 中 Lottie動畫庫的使用指南

    Lottie 是 Vue3 項(xiàng)目中實(shí)現(xiàn)高品質(zhì)動畫的最佳選擇之一,通過封裝通用組件可快速集成到項(xiàng)目中,結(jié)合其豐富的 API 能實(shí)現(xiàn)靈活的交互控制,本文來介紹一下Lottie動畫庫的使用,通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-02-02
  • vue項(xiàng)目雙滑塊組件使用

    vue項(xiàng)目雙滑塊組件使用

    這篇文章主要介紹了vue項(xiàng)目雙滑塊組件使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • ElementUI表格錯(cuò)位修復(fù)心得分享

    ElementUI表格錯(cuò)位修復(fù)心得分享

    這篇文章主要介紹了ElementUI表格錯(cuò)位修復(fù)心得,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2026-03-03
  • Vue中nvm-windows的安裝與使用教程(親測)

    Vue中nvm-windows的安裝與使用教程(親測)

    nvm全英文也叫node.js version management,是一個(gè)nodejs的版本管理工具,這篇文章主要介紹了Vue中nvm-windows的安裝與使用,需要的朋友可以參考下
    2023-02-02
  • Vue3中泛型使用unknown優(yōu)于any問題

    Vue3中泛型使用unknown優(yōu)于any問題

    在Vue3中,建議優(yōu)先使用`unknown`而不是`any`,因?yàn)閌unknown`提供了更好的類型安全保證,在組件Props、組合式函數(shù)、事件處理和類型守衛(wèi)中使用`unknown`,可以有效避免運(yùn)行時(shí)錯(cuò)誤,保持TypeScript的類型安全優(yōu)勢
    2025-10-10
  • vue中使用element日歷組件的示例代碼

    vue中使用element日歷組件的示例代碼

    這篇文章主要介紹了vue中如何使用element的日歷組件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Vue移動端開發(fā)的適配方案與性能優(yōu)化技巧總結(jié)大全

    Vue移動端開發(fā)的適配方案與性能優(yōu)化技巧總結(jié)大全

    在移動端開發(fā)中,vue項(xiàng)目需要解決不同設(shè)備尺寸的適配問題,下面這篇文章主要介紹了Vue移動端開發(fā)的適配方案與性能優(yōu)化技巧總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-03-03
  • 深入了解Vue Pinia持久化存儲二次封裝

    深入了解Vue Pinia持久化存儲二次封裝

    Pinia 是2019年由vue.js官方成員重新設(shè)計(jì)的新一代狀態(tài)管理庫,類似Vuex,下面我們就來學(xué)習(xí)一下如何通過Pinia實(shí)現(xiàn)持久化存儲的相關(guān)知識,感興趣的小伙伴可以了解下
    2023-12-12
  • Vue路由的模塊自動化與統(tǒng)一加載實(shí)現(xiàn)

    Vue路由的模塊自動化與統(tǒng)一加載實(shí)現(xiàn)

    這篇文章主要介紹了Vue路由的模塊自動化與統(tǒng)一加載實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論

江源县| 碌曲县| 蕲春县| 贡嘎县| 屏山县| 台江县| 德惠市| 遵义市| 蓬安县| 青海省| 通河县| 永春县| 威远县| 阿拉尔市| 河南省| 调兵山市| 长兴县| 房产| 额济纳旗| 呈贡县| 铜梁县| 通河县| 怀集县| 黄平县| 乌拉特后旗| 祁门县| 广南县| 梁山县| 镇赉县| 金溪县| 得荣县| 鲜城| 扎鲁特旗| 舞钢市| 桂林市| 琼结县| 闵行区| 南华县| 宝鸡市| 噶尔县| 石阡县|