vue 中 用showdown预览markdown文件,并用highlight.js 实现代码高亮

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

在vue项目中,通过showdown 实现markdown文件的预览,highlight.js实现代码块的sql语句高亮。

1.安javascript教程装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.请求后端接口中的数据,并使用。

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.效果图

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值