·

Mathjax loads slow. How to load local JS file with Nuxt?

发布时间:2024-06-17 21:35:18阅读量:792
转载请注明来源

In How to render math in Vue or Nuxt?, we explain the way to use Mathjax to render beautiful math formula in Nuxt.js. However, using CDN to load Mathjax is easy, but it degrades the performance of our pages. In other words, Mathjax may load slow if it is loaded by CDN.

One of the solutions is to load Mathjax locally. You can use npm to install Mathjax to your project.

npm install mathjax@4.0.0-beta.6

However, it is difficult to integrate with Mathjax in Nuxt. Not only because there is little information about this, but following the Mathjax documentation may not work at all for Nuxt.js.

Therefore, there is only one way that is easy enough: load Mathjax's JS file locally. In other words, you continue to use CDN to load Mathjax, but load local Mathjax's JS file. Just follow the steps:

  1. Download Mathjax's source files from MathJax v4.0.0-beta.6.
  2. Put all the Mathjax files in the directory public/mathjax. Note that if you are using VSCode to write your Nuxt project, don't forget to see VSCode error: To enable project-wide JavaScript/TypeScript language features, exclude large folders... to avoid an important error.
  3. In your nuxt.config.ts
head: {
    link: [{
        rel: 'icon',
        type: 'image/x-icon',
        href: '/favicon.png'
    }],
    script: [
        {
          type: "text/javascript",
          id: "MathJax-script",
          async: true,
          src: "/mathjax/tex-chtml.js",
          tagPosition: "bodyClose",
        },
        {
          innerHTML:
            "MathJax = {tex: {inlineMath: [['$', '$'],['$$', '$$']]}};",
        },

    ]
}


0 人喜欢

评论区

暂无评论,来发布第一条评论吧!

弦圈热门内容

Node.js安装与更新教程 - Windows版

Node.js环境是前端开发的必备环境,无论哪一个前端框架都需要用到node.js,本文将会教你如何安装配置node.js环境。如果你已经安装过node.js,但是想更新,那你也只需要按照安装的步骤直接覆盖原目录即可。首先,打开node.js的官网https://nodejs.org/zh-cn,然后下载node.js的Windows安装包。注:无特别需求,直接安装LTS(long term support)版就可以了。如果觉得在官网下载速度太慢,可以选择镜像网站下载:https://mirrors.aliyun.com/nodejs-release/v22.14.0/?spm=a2c6h.25603864.0.0.4b507621PbOVxm。然后根据自己电脑的配置选择安装包,下载完后直接打开,选Next勾同意协议,然后选Next设置你的安装路径,然后选Next接下来,这里不用管直接选Next继续选Next,注:这里说的是某些npm库安装时需要从C/C++中编译出来,如果你想要能安装这些库,就勾选此项。现在直接选Install,开始安装等待安装完成(如果这时候弹出请求管理员权限,点是 ...

Flutter、Tauri、React Native、Android原生的四次开发经历,为何最后我选择了React Native?

Flutter、Tauri、React Native都是目前移动端流行的跨平台开发框架,并且他们还能胜任全平台开发。React Native是最早开源的跨平台框架,而Flutter紧跟其后,并且Flutter最近几年超越React Native成为当前世界上最流行的跨平台框架。Tauri则是最近几年诞生的新跨平台框架,跟其他框架显著不同的一点是,它允许你使用任何前端框架,即你能够自由使用整个Web生态进行跨平台开发。Flutter、Tauri、React Native、Android原生我都尝试过,接下来我说一下我分别使用他们的开发经历。首先,我第一个使用的跨平台框架是Tauri,当时Tauri V2.0已经发布,我看它能够使用Nuxt.js或者Next.js进行开发,觉得蛮不错的。毕竟我有两个网站,一个是Nuxt写的,另一个是Next写的,这样我就只需要在原有代码基础上修改一下就行了。于是很快我就栽跟头了,首先是Nuxt的桌面端应用,我在dev模式下,没有发现任何问题,$fetch请求也能正常发送。结果build以后,发现所有的请求都废了,全是404,将url改为完整url,结果就是 ...

中国当前的教育最缺少什么?

在我看来,目前国内教育最大的问题之一,就是不告诉学生这个社会残酷的真相,只会不断给学生灌输好好读书,以后勤奋工作才能出人头地、赚钱的错误观念。这导致大学里一个非常奇怪的现象,很多人明明没有赚钱的本事,却拿着父母赚的辛苦钱无所事事,在学校享受人生,俨然一副天堂的样子。因为到了大学,好好读书这个意念也随着高考结束而逐渐淡化,没有人再管你的学习,你只需要期末考试及格,干啥都可以,甚至不及格还能补考。然而殊不知这样的学生出来以后,大概率很快会被社会毒打。被当成螺丝钉是小事,最怕的是连当螺丝钉的资格都没有。目前国内教育的目的就是为了产生好的螺丝钉。但是讽刺的是,学校即便连螺丝钉都不能好好培养出来。因为学校教育与社会现实严重脱轨,以计算机编程类的课程为例,很多课里面的内容还停留在十几年前,完全没有与时俱进,也没考虑生产实际。这也意味着,在学校哪怕你认真上好每一节,学好所有的知识,也并不能在社会的竞争中脱颖而出,你必须自学加量,疯狂内卷,在自我内耗中度过。学校只是个没有感情的流水线工厂,只会机械性的给你灌输教材的内容,不会教你如何赚钱、如何社交、如何对待感情等等更加重要的问题,最后导致很多人遇到感情 ...

是否存在人类大脑永远无法理解的数学结构?

是否存在人类大脑永远无法理解的数学结构?答案是存在也不存在。这个问题重点在于“理解”这个词,怎么样才算是理解?本文中,我们就将理解分为直观理解和抽象理解吧。所谓直观理解,指的是能够通过五官直接感受到。基于这个定义,数学从线性代数中最基础的n维线性空间开始,就不是人脑能够直观理解的了,毕竟人脑只能理解四维以下的空间,即只能理解三维的空间,不能理解处在第四维度的时间。到目前为止,四维时空是否存在都还存在争议,因为并没有直接证据表明四维时空真实存在。因此,从物理世界来看,人脑从四维线性空间开始就无法直观理解了。抛开四维空间是否真实存在的物理争议,考虑纯粹数学上的定义,四维空间是存在的。那么有可能通过作图的方式来直观理解高维空间呢?不能。那些所谓画出四维及以上空间的图,其实是通过投影等方法实现降维,将高维空间的东西通过三维的形式表现出来,并不是真正的高维空间。既然存在那么多大脑无法理解的数学结构,这时数学就派上用场了。数学正是人类用于理解人脑无法直观理解的工具,因为人脑有个很强大的功能——抽象化,既然你无法想象、也无法理解,那干脆就将它抽象化为一个数学对象来研究,即抽象理解。人类对于高维空间的 ...

数学与物理公式可以精准简洁地描述自然现象,究竟是世界本就如此巧妙,还是科学家努力简化后的结果?

这个问题有点像数学究竟是人发明的,还是人发现的?每个人基于不同理念、哲学观,会有不同的答案。而如今这个问题,可以引申出几个类似的问题。世界的底层运行规律究竟是复杂的,还是简洁的?物理定律究竟是真理,还是人类为解释宇宙而创造的?(类似于数学是否人造?)数学定理或者物理定律是绝对真理吗?或者说存在绝对真理的数学定理或者物理定律吗?这些问题都涉及到一种哲学观,没有标准答案,只是你观念的不同。回到这个问题,我是持爱因斯坦的那种观点,认为宇宙能够由简洁而优美的数学所描述,因为宇宙的底层规律本身就是足够简单的,只是人类未曾发现。换句话说,这就有点像线性空间的基底一样,只需要几条简单的定律,就可以通过线性组合,不断复杂化,最终产生如今的宇宙。这里又涉及到一个问题,即这个线性空间到底是有限维的,还是无穷维的?不过基于世界本质的简单性,从审美角度出发,我更倾向于假设这个线性空间是有限维的。因此,从这个角度看,如果数学或物理公式不够简洁和美妙,那么其本身所蕴含的奥秘也就越浅显,并且距离世界的本质就更远,即引用高斯的话“距离神更远”。故而简洁的数学或物理公式,更多的是科学家们发现的结果,是自然的,而不是刻意 ...

国内曾经出现过很多的数学论坛,但是为什么如今大多数都访问不了了?

今天我在知乎宣传弦圈的时候,回答了一个问题有哪些数学论坛值得推荐?,结果发现有好几个回答里的数学网站已经访问不了了。这些回答里的几乎所有数学网站,我都未曾听说过(正如弦圈很多人不知道一样),这证明国内曾经也出现过很多数学论坛,有些或许曾经也辉煌过,但是最后都坚持不下去了。我做数学的时候,用的数学论坛基本上都是国外的MathStackExchange和Mathoverflow,知乎也很少用。可以说国内目前除了知乎,就没有高人气的数学论坛。毕竟本来纯数学就是一种非常小众的文化,而数学这种严肃的内容,也注定不会有高活跃、高互动的用户。因此可以看到很多国内的数学网站都已经不能访问了,有些还“活”着的,其实也是半死不活,空有用户量,但活跃度却低得可怜。而知乎的数学也早就变味了,彻底娱乐化了,真正有营养的内容已经没多少,真正有实力的大佬也相继退乎,回答都删得干干净净的。似乎中文互联网中已经没有太多数学文化的栖息之地了。国外虽然也好不到哪里去,但却跟国内天差地别,最大的MathStackExchange和Mathoverflow两个数学论坛,虽然也是不能盈利,纯粹靠捐赠维持生计,但是却能保持纯粹的数 ...

前端跨平台开发框架对比:Flutter vs Tauri vs React Native

传统移动端开发往往需要同时兼顾Android和IOS的开发,而桌面端开发又需要同时兼顾Windows、MacOS、Linux系统。如果你想要全平台覆盖,不仅意味着要同时维护多套完全不同的代码(极大提高了维护成本),并且代码和逻辑还可能不能复用,这意味着高昂的开发成本(极低开发效率),每个平台都得从零开始写。现在国内还多出个鸿蒙系统,这意味着你要同时开发和维护更多套代码,哪怕补贴钱,这成本也不是小企业能够负担得起的。于是,跨平台框架应运而生,Facebook开源的React Native,曾经是最流行的框架,不过近几年被Flutter超越。它不仅能让你使用React语言同时开发Android和IOS APP,甚至还能进行Windows桌面端开发。而谷歌开源的Flutter,是目前最流行的跨平台框架,略微领先React Native。它能让你使用dart语言开发移动端与桌面端应用。而Tauri则允许你使用任何前端框架进行全平台开发,不过也需要你懂得一些Rust语言。我们先从开发体验出发来对比这三个跨平台框架。首先,React Native能够让你完全用JSX语言来进行跨平台开发,这对于本身 ...

给Web开发者写的React Native简介,React Native与React的区别与对比(2)

本文我们继续之前的话题给Web开发者写的React Native简介,React Native与React的区别与对比(1),在上文中我们讲到在React Native想要写<p>或者<span>需要用Text组件。除了展示文本,还有一个很重要的东西就是展示图片。在React Native中你无法使用HTML的<img>,而要用React Native提供的Image组件。处理图片可以说是React Native中的一个难点,因为在React Native中无论是什么图片都需要你设置一个宽度和高度,见实例:import React from 'react'; import {Image} from 'react-native'; import {SafeAreaView, SafeAreaProvider} from 'react-native-safe-area-context'; const DisplayAnImage = () => ( <SafeAreaProvider> <SafeAreaView s ...

弦圈登录功能完成更新,之后只要登录一次便可长期保持登录

原标题:弦圈登录功能完成更新,之后只要登录一次便可长期保持登录。目前该功能仍在测试阶段不稳定,如果发现有登录后掉线问题,可以试试清空cookie。这几天,我对弦圈的登录功能进行了更新,换了目前最新的OAuth2技术,取代以前的session登录。基于OAuth2的登录功能有很多好处,首先第一个就是能够长时间的保持登录状态,现在大家上网,无论是哪个平台,你都会发现自己只要登录一次,哪怕过了很久再打开,仍然是登录状态。第二个好处就是,token是无状态的,因此会占用更少的服务器资源,这意味着弦圈负荷更小、访问更顺畅。旧登录功能基于session是有状态的,如果人多起来,服务器负荷直线上升,这或许也是之前卡的原因之一吧。由于我是第一次在Web端使用OAuth2实现登录功能,因此刚开始更新的时候,网站还是有很多bug。比如说最大的一个bug就是,关闭浏览器后重新打开,需要重新登录,这显然问题很大。而这个bug今天经过我整整一天的艰难调试,终于是修好了。别小看一个简单的登录功能,尤其是OAuth2,前后端实现真的挺复杂。最后虽然网站代码已经更新好了,但是用户浏览器里的cookie是不会因此自动删 ...

给Web开发者写的React Native简介,React Native与React的区别与对比(1)

React Native是React下的一个跨平台框架,能让你用熟悉的React JSX语法来进行跨平台开发。所谓的跨平台开发是如今的一种趋势,即用同一种语言来同时进行Web端、手机端安卓与IOS、桌面端Windows、MacOS、Linux的开发。这样不仅能极大的提高开发效率,同时大大增加了代码的可维护性,节省了大量的成本。然而React Native虽然带个React,用的也是JSX语言,却跟React有很多不一样的地方。因为React Native不仅面向网页端,还面向手机端APP,而React Native的代码会直接编译为native原生代码。在本文中,我将会列举说明几个React Native的不同之处。首先,在React Native中我们不能像React那样直接使用HTML语言,因为无论是Android还是IOS,都无法编译HTML语言。因此,我们需要使用React Native提供的组件。在React Native中,如果你想要写<div>,则需要换成<View>。View组件在Web端会被编译成<div>,而在Android和IO ...

React Native UI库介绍与对比

React Native的生态与React.js相比,没那么丰富,或者说手机端的生态本身就跟Web端相差甚远。React.js作为Web端虽然生态丰富,但由于其JS库大多数都不能直接用在React native中,因此很多在Web端存在诸多解决方案的问题,如代码块高亮、渲染数学公式,在手机端都难找到合适的办法。React Native的UI库,其实可以选择的并不多,不像Web端百花齐放,选个UI库都能选择困难症。在本文,我将会介绍几个我所知道的React native UI库,其中有几个我是用过的。1. React Native Paper这是一个Material Design风格的UI库,在GitHub拥有13.4k个stars,官方文档👉React Native Paper。该库安装步骤简单,组件使用以及自定义也容易,唯一的缺点就是组件不够多,有些场景需要你另外补充其他库来满足需求。React Native Paper应该是React native唯一一个Material Design UI库,该库能够跟React native navigation整合,构建Material风格的 ...