第一篇. vue 中 用showdown預覽markdown文件,並用highlight.js 實現代碼高亮


showdownGithub地址: https://github.com/showdownjs/showdown

在vue項目中,通過showdown 實現markdown文件的預覽,highlight.js實現代碼塊的高亮。

1.安裝showdown
npm install showdown --save
2.在組建中引入showdown
import showdown from "showdown";
​
var converter = new showdown.Converter();
​
//顯示table
converter.setOption("tables", true);
3.在methods中創建方法
methods: {
    //轉換markdown為html語言
    compileMarkDown(val) {
      return converter.makeHtml(val);
    },
 }
4.請求后端接口中的數據,並使用。
<div v-html="compileMarkDown(content)"></div>
5.實現代碼高亮
// 安裝highlight.js
npm install highlight.js
​
// 引入文件
import hljs from "highlight.js";
import "highlight.js/styles/default.css"; //樣式文件
// 注冊局部指令 或全局指令
// 局部 定義自定義指令 v-highlight 代碼高亮
directives: {
    highlight: {
      update(el) {
        let blocks = el.querySelectorAll("pre code");
        blocks.forEach((block) => {
          hljs.highlightBlock(block);
        });
      },
    },
  },
 // 在main.js中創建全局指令
 // 定義自定義指令 v-highlight 代碼高亮
 // Vue.directive('highlight',function (el) {
 //  let blocks = el.querySelectorAll('pre code');
 //   blocks.forEach((block)=>{
 //    hljs.highlightBlock(block)
 //   })
 // }),
// 在html中使用 v-highlight 代碼高亮指令
<div v-html="compileMarkDown(content)" v-highlight></div>ID=?xoyzlub.html
6.完整代碼
<template>
    <div
      class="content-markdwon"
      v-html="compileMarkDown(content)"
      v-highlight
    >
    </div>
</template>

<script>
import { lookDoc } from "@/api/filelist";
import showdown from "showdown";
import hljs from "highlight.js"
import 'highlight.js/styles/default.css';
var converter = new showdown.Converter();
//表格顯示
converter.setOption("tables", true);
export default {
   // 定義自定義指令 v-highlight 代碼高亮
  directives: {
    highlight: {
      update(el) {
        let blocks = el.querySelectorAll("pre code");
        blocks.forEach((block) => {
          hljs.highlightBlock(block);
        });
      },
    },
  },
  data() {
    return {
      content: "",
    };
  },
  methods: {
    getDocment(val) {
       // 請求接口
      lookDoc({ id: val }).then((res) => {
        this.content = res.data.info[0].content;
      });
    },
     // 轉換markdown語法為html語法
    compileMarkDown(val) {
      return converter.makeHtml(val);
    },
  },
};
</script>

<style>
</style>
6.效果圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM