vue2使用mathjax渲染数学公式

本篇使用的cdn引入的,再vue的public/inde.html 引入

<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML"></script> 

使用watch监听需要渲染的数据是否拿到

  watch: {
    //info是后端返回的数学公式以及文字描述,如果不想渲染文字描述的话,可以让后端给公式添加个标识,方便前端找到对应的公式进行渲染
    info: {
      handler(newVal, oldVal) {
        if (newVal) {
          this.loadMathJax();
        }
      },
    },
    deep: true,
    immediate: true,
  },

再methods这样写

methods:{
    loadMathJax() {
      if (!window.MathJax) {
        const script = document.createElement("script");
        script.type = "text/javascript";
        script.async = true;
        script.src =
          "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML";
        script.onload = () => {
          this.mathJax();
        };
        document.body.appendChild(script);
      } else {
        this.mathJax();
      }
    },
    mathJax() {
      if (window.MathJax) {
        this.MathQueue("latexDiv"); // 渲染对应的id/class
      }
    },
    MathQueue(elementId) {
      if (!window.MathJax) {
        return;
      }
      window.MathJax.Hub.Queue([
        "Typeset",
        window.MathJax.Hub,
        document.getElementsByClassName(elementId),
      ]); // 根据class
    },

}

再template,使用v-html

<div
            class="text_container"
            v-for="(item, index) in info"
            :key="index"
            style="display: flex"
          >
            <span class="latexDiv" v-html="`\\[${item}\\]`"></span>
          </div>

 本篇只是简单引用渲染,根据业务需求,要是展示更为复杂的数学公式,需要进一步了解mathjax

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值