首頁 > web前端 > Vue.js > 主體

Vue3怎麼解析markdown並實現程式碼高亮顯示

王林
發布: 2023-05-20 16:16:24
轉載
3720 人瀏覽過

Vue實作部落格前端,需要實作markdown的解析,如果有程式碼則需要實作程式碼的高亮。
Vue的markdown解析函式庫很多,如markdown-it、vue-markdown-loader、marked、vue-markdown等。這些庫都大同小異。這裡選用的是marked,程式碼高亮的函式庫選用的是highlight.js。

具體實作步驟如下:

一、安裝依賴函式庫

在vue專案下開啟指令窗口,並輸入下列指令

npm install marked -save    // marked 用于将markdown转换成html
npm install highlight.js -save   //用于代码高亮显示
登入後複製

指令執行完後來可以在控制台或package.json檔案中看到有安裝的版本號碼

Vue3怎麼解析markdown並實現程式碼高亮顯示

#二、在main.js檔案中引入highlight.js及樣式並建立一個自訂的全域指令

import hljs from 'highlight.js';
import 'highlight.js/styles/atom-one-dark.css' //样式

//创建v-highlight全局指令
Vue.directive('highlight',function (el) {
  let blocks = el.querySelectorAll('pre code');
  blocks.forEach((block)=>{
    hljs.highlightBlock(block)
  })
})
登入後複製

這樣就可以在vue元件中使用v-highlight引用程式碼高亮的方法了。

三、在Vue元件中應用marked解析及實作程式碼高亮

程式碼範例如下:

 <!-- 正文输出 -->
<div class="entry-content">
  <div v-highlight v-html="article"  id="content"></div>
</div>
登入後複製
<script>
    // 将marked 引入
  import { marked }from &#39;marked&#39;;
    export default {
        name: &#39;articles&#39;,
        data(){
          return{
              article:&#39;&#39;
          }
        },
        methods: {
          getPostDetail() {
            console.log(&#39;getPostDetail()&#39;+this.id)
            fetchPostDetail(this.id).then(res => {
               this.postdetail=res.data
               // 调用marked()方法,将markdown转换成html
               this.article= marked(this.postdetail.content);
               console.log(res.data)
              }).catch(err => {
                  console.log(err)
              })

          },
        created() {
          //调用获取文章内容的接口方法
          this.getPostDetail()
        },
    }
 </script>
登入後複製

四、顯示效果

markdown解析及程式碼高亮顯示效果

Vue3怎麼解析markdown並實現程式碼高亮顯示

範例中引用的樣式是import 'highlight.js/styles/atom-one-dark.css'
#實際highlight.js/styles中提供了許多樣式,可以依照自己的喜好選用。

Vue3怎麼解析markdown並實現程式碼高亮顯示

以上是Vue3怎麼解析markdown並實現程式碼高亮顯示的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板