Vue3解析markdown并實(shí)現(xiàn)代碼高亮顯示的詳細(xì)步驟
Vue實(shí)現(xiàn)博客前端,需要實(shí)現(xiàn)markdown的解析,如果有代碼則需要實(shí)現(xiàn)代碼的高亮。
Vue的markdown解析庫有很多,如markdown-it、vue-markdown-loader、marked、vue-markdown等。這些庫都大同小異。這里選用的是marked,代碼高亮的庫選用的是highlight.js。
具體實(shí)現(xiàn)步驟如下:
一、安裝依賴庫
在vue項(xiàng)目下打開命令窗口,并輸入以下命令
npm install marked -save // marked 用于將markdown轉(zhuǎn)換成html npm install highlight.js -save //用于代碼高亮顯示
命令執(zhí)行完后可以在控制臺或package.json文件中看到有安裝的版本號

二、在main.js文件中引入highlight.js及樣式并創(chuàng)建一個(gè)自定義的全局指令
import hljs from 'highlight.js';
import 'highlight.js/styles/atom-one-dark.css' //樣式
//創(chuàng)建v-highlight全局指令
Vue.directive('highlight',function (el) {
let blocks = el.querySelectorAll('pre code');
blocks.forEach((block)=>{
hljs.highlightBlock(block)
})
})
這樣就可以在vue組件中使用v-highlight引用代碼高亮的方法了。
三、在Vue組件中應(yīng)用marked解析及實(shí)現(xiàn)代碼高亮
代碼示例如下:
<!-- 正文輸出 --> <div class="entry-content"> <div v-highlight v-html="article" id="content"></div> </div>
<script>
// 將marked 引入
import { marked }from 'marked';
export default {
name: 'articles',
data(){
return{
article:''
}
},
methods: {
getPostDetail() {
console.log('getPostDetail()'+this.id)
fetchPostDetail(this.id).then(res => {
this.postdetail=res.data
// 調(diào)用marked()方法,將markdown轉(zhuǎn)換成html
this.article= marked(this.postdetail.content);
console.log(res.data)
}).catch(err => {
console.log(err)
})
},
created() {
//調(diào)用獲取文章內(nèi)容的接口方法
this.getPostDetail()
},
}
</script>
四、顯示效果
markdown解析及代碼高亮顯示效果

示例中引用的樣式是 import 'highlight.js/styles/atom-one-dark.css'
實(shí)際highlight.js/styles中提供了很多樣式,可以根據(jù)自己的喜好選用。

到此這篇關(guān)于Vue3解析markdown并實(shí)現(xiàn)代碼高亮顯示的文章就介紹到這了,更多相關(guān)Vue3解析markdown內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
treeSelect樹組件設(shè)置父節(jié)點(diǎn)禁用的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于treeSelect樹組件設(shè)置父節(jié)點(diǎn)禁用的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-12-12
Vue全局共享數(shù)據(jù)之globalData,vuex,本地存儲的使用
這篇文章主要介紹了Vue全局共享數(shù)據(jù)之globalData,vuex,本地存儲的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
詳解Vue自定義指令如何實(shí)現(xiàn)處理圖片加載失敗的碎圖
這篇文章主要介紹了詳解Vue自定義指令如何實(shí)現(xiàn)處理圖片加載失敗的碎圖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02
Element-ui Image圖片按需引入大圖預(yù)覽
這篇文章主要為大家介紹了Element-ui Image圖片按需引入大圖預(yù)覽實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
一文搞明白vue開發(fā)者vite多環(huán)境配置
Vue是一款流行的JavaScript框架,用于開發(fā)動態(tài)單頁應(yīng)用程序,本地安裝和環(huán)境配置是學(xué)習(xí)和使用Vue的第一步,下面這篇文章主要給大家介紹了關(guān)于vue開發(fā)者vite多環(huán)境配置的相關(guān)資料,需要的朋友可以參考下2023-06-06
基于vue循環(huán)列表時(shí)點(diǎn)擊跳轉(zhuǎn)頁面的方法
今天小編就為大家分享一篇基于vue循環(huán)列表時(shí)點(diǎn)擊跳轉(zhuǎn)頁面的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Vue3+Vite如何解決“找不到模塊“@/components/xxx.vue”或其相應(yīng)的類型聲明ts(2307)”
在Vue項(xiàng)目中使用Vite時(shí),可能因版本差異而需修改tsconfig.app.json而非tsconfig.json以解決編譯錯誤,本文分享個(gè)人解決經(jīng)驗(yàn),供參考2024-10-10

