美文网首页
WEB-TOOLS-03MathJax与Vue

WEB-TOOLS-03MathJax与Vue

作者: 杨强AT南京 | 来源:发表于2019-11-03 22:36 被阅读0次

  把MathJax应用到Vue框架中,其中的关键是引入的脚本在Vue可以使用,Vue有全局变量的解决机制,这里直接在全局index.html文件中引入,这不是最好的方式。
  在Vue中使用主要注意三个步骤:
  1. 引入的模块以及关联资源;
  2. Vue的数据处理与显示处理方式;
  3. MathJax转换处理;


前言

  • 在Vue中使用MathJax有一个特别需要注意的地方就是:

    • Vue是浏览器端JS脚本模块,但是MathJax分成浏览器端与服务器端,这两者是需要区分开的。
    • 所以在Vue中不要使用服务器端MathJax(文档中称为MathJax-Node编程)
  • 在Vue中使用的是组件模式:

    • 比如需要把Latex渲染成HTML,就是用tex-chtml.js模块
  • 由于Vue环境的特殊性,所以有一定的套路。

引入正确的js脚本

  • 在Vue的POI框架,在public构建一个index.html,在这里引入。
    -因为Vue的特殊性,使用其他方式都特别不好使用。

引用公共资源


    <script type="text/javascript" id="MathJax-script" async
      src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
    </script>

引入本地资源

  • 首先安装到本地,并把本地的es5下的相关文件拷贝到js(目录名可以随意命名)目录,然后使用
    <script type="text/javascript" id="MathJax-script" async
      src="./js/tex-chtml.js">
    </script>
MathJax组件脚本引入

在Vue中处理模式

绑定输入源

定义一个属性

export default {
    name: 'index',
    data: () => {
        return {
            ......
            latex: '数学公式测试:a^2 + b^2 = \\dfrac{c}{d}',
        };
    },
    computed: {
        
    },
};

使用v-model绑定组件


<div class="body_mid">
            <ul>
                <li>
                    <section> 
                        <textarea v-model="latex">LaTex输入区域</textarea>
                    </section>
                </li>
                <li>
                    <div> 
                    </div>
                </li>
            </ul>
        </div>

使用计算属性

定义一个计算属性

export default {
    name: 'index',
    data: () => {
        return {
            ......
            latex: '数学公式测试:a^2 + b^2 = \\dfrac{c}{d}',
        };
    },
    computed: {
        tex2html() {
            .....
            return '<h1>Hello</h1>';
        },
    },
};

使用v-html输出计算结果

<div class="body_mid">
    <ul>
        <li>
            <section> 
                <textarea v-model="latex">LaTex输入区域</textarea>
            </section>
        </li>
        <li>
            <div v-html="tex2html"> 
            </div>
        </li>
    </ul>
</div>

转换的代码实现

  • 这个代码相对比较简单。

export default {
    name: 'index',
    data: () => {
        return {
            .....
            latex: '数学公式测试:a^2 + b^2 = \\dfrac{c}{d}',
        };
    },
    computed: {
        tex2html() {
            const options = {
                em: 19.200000762939453,
                ex: 8.533333333333333,
                containerWidth: 626.40625,
                lineWidth: 1000000, 
                scale: 1.005530377338936,
                display: false,
            };
            // var input = "a^2 + b^2 = \\dfrac{x}{y}";
            var input = this.latex;
            var html = MathJax.tex2chtml(input, options);  // 返回的是DOM对象
            return  html.outerHTML;
        },
    },
};


附录

MathJax对HTML页面的自动处理

  • 实际上MathJAx自动对HTML本身中特殊区域的字符做MathJax转换。

    • 一般是对\( ... )\符号与$ ... $之间的数据进行转换。
  • 下面是官网提供的简单例子


<!DOCTYPE html>
<html>
<head>
<title>MathJax TeX Test Page</title>
<script type="text/javascript" id="MathJax-script" async
  src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>
</head>
<body>
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
</body>
</html>
  • 效果如下:
页面的直接处理方式

ES6与ES5的兼容处理

  • 为了各种浏览器对ES6标准实现的不同,可以引入如下js脚本解决兼容问题。
    <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>

关于webpack

  • MathJax还提供了Webpack的配置使用,这里没有进一步介绍。

相关文章

  • WEB-TOOLS-03MathJax与Vue

      把MathJax应用到Vue框架中,其中的关键是引入的脚本在Vue可以使用,Vue有全局变量的解决机制,这里直...

  • Vuejs ,jQuery ajax, Vue resource

    HTML 代码: Vue js 与 jQuery ajax 结合案例代码 Vue js 与 Vue resourc...

  • Vue3初始化

    Vue3-UI初始化 一、Vue3与Vue2的区别 Vue3与Vue2写法90%一致 Vue3template可以...

  • Vue应用

    Vue项目 Vue结构 Vue项目打包与发布 Vue语法二 Vue网络请求 Vue路由 动态路由 编程式路由导航

  • vue

    1,jQuery与vue区别 jQuery--指令式编程 vue--声明式编程 vue更加高效,流行 2,let与...

  • 2019-04-02

    课表安排 vue环境安装 vue绑定事件 vue计算属性 vue判断与循环 CDN实战DEMO vue脚手架的搭建...

  • Vue 学习笔记(二)

    1、Vue实例与数据绑定 1.1 实例与数据 Vue.js应用的创建很简单,通过构造函数Vue就可以创建一个Vue...

  • 初次使用vue

    Get Started 使用@vue/cli搭建项目 vue.js 与 vue.runtime.js SEO(搜索...

  • Vue 笔记三:Vue2.0与1.0的区别

    Vue 笔记二:Vue2.0与1.0的区别 升级的区别 与angular的断层式升级不同,vue延续了自己的风格。...

  • web前端开发高级

    前端高效开发框架技术与应用 Vue 基础Vue 框架简介 MVX 模式介绍Vue 框架概述如何使用 Vue.js ...

网友评论

      本文标题:WEB-TOOLS-03MathJax与Vue

      本文链接:https://www.haomeiwen.com/subject/pknlbctx.html