[vue]-通过url链接获取markdown并高亮显示

本文介绍如何在Vue应用中处理后台返回的Markdown URL,使用vue-markdown和highlight.js实现Markdown内容的加载和代码高亮。由于vue-markdown组件仅渲染一次,故需采用v-if技巧进行多次渲染。

之前也有篇文章将markdown文件转html的,但是这次后台变了,后台将返回url的形式,并且之前发现的LaTeX 公式 无法转换,因此换了插件。

安装以下依赖

vue-markdown、highlight.js(高亮的)
vue-markdown源码:https://github.com/miaolz123/vue-markdown

PS:v-if=show 是因为vue-markdown仅在开始时渲染一次,它将覆盖source的属性。
而我要多次渲染

直接贴代码了

<template>
  <div>
    <vue-markdown v-if="show">{{markdownContent}}</vue-markdown>
  </div>
</template>
import '@/assets/css/markdownhere.css'      //本地的样式
import hljs from 'highlight.js';
import 'highlight.js/styles/default.css';
import VueMarkdown from 'vue-markdown';
    components: {
	  VueMarkdown
   },
   data () {
    return {
      show: false,    //
      markdownContent: '',
    };
  },
   methods: {
    async highlighthandle () {    //高亮代码
      await hljs;
      let highlight = document.querySelectorAll('code,pre');
      highlight.forEach((block) => {
        hljs.highlightBlock(block);
      })
    },
    bindEvent () {
      let self = this;
      eventBus.$on("getArticleItem", data => {    //这里是接听其他组件传来的值的,依情况而定,也可以直接写方法
        self.show = false;
        self.articleItem(data)
      });
    },
    articleItem (id) {
      let url='...'    // 这里不贴出来了
      this.$http.post(url)
        .then((res) => {
          if (res.status == 200)
          {
            this.show = true;
            this.markdownContent = res.data;
          }
          console.log(res)
        })
        .catch((error) => {
          console.log(error)
        })
    },
  },
  mounted () {
    this.highlighthandle()
  },
  updated () {
    this.highlighthandle()
  },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值