Vue3项目实战:用MathJax 3.0优雅渲染LaTeX公式(附完整配置代码)

KaTeX vs MathJax实战对比:如何在博客中高效渲染LaTeX公式? 本文深入对比了KaTeX和MathJax在博客中渲染LaTeX公式的性能与功能差异。KaTeX以快速渲染和低资源占用见长,适合静态站点;MathJax则提供完整的LaTeX支持,适合复杂公式需求。文章还提供了Hexo和VuePress等流行框架的集成方案,帮助开发者根据项目需求选择最佳公式渲染方案。 阅读详情

Vue3与MathJax 3.0深度整合:现代化LaTeX公式渲染方案

当教育科技类应用需要在前端展示复杂的数学公式时,MathJax始终是可靠的选择。随着Vue3的普及和MathJax 3.0的重大升级,开发者现在能够以更高效的方式实现这一需求。本文将带你探索如何利用Vue3的组合式API特性,充分发挥MathJax 3.0的性能优势。

1. 为什么选择MathJax 3.0与Vue3组合

MathJax 3.0相比2.x版本进行了架构重构,体积减少了60%,加载速度提升30%。其模块化设计特别适合与现代前端框架配合使用。Vue3的组合式API为我们提供了更灵活的代码组织方式,使得数学公式渲染可以封装为可复用的逻辑单元。

关键改进点对比:

特性MathJax 2.7.5MathJax 3.0
初始化方式全局配置Hub.Config更细粒度的配置选项
性能优化相对较慢异步渲染,速度更快
与框架集成需要手动处理DOM更新原生支持动态内容
包体积较大显著减小
TypeScript支持有限完整的类型定义

提示:MathJax 3.0不再使用Hub对象,API设计更加现代化,减少了配置复杂度。

2. 基础集成方案

2.1 通过CDN引入MathJax

在Vue3项目中,我们推荐将MathJax配置放在单独的文件中管理。首先在项目根目录创建mathjax.ts:

// src/utils/mathjax.ts
declare global {
  interface Window {
    MathJax: any;
  }
}

let initialized = false;

export const initMathJax = () => {
  if (initialized || window.MathJax?.typesetPromise) return;
  
  window.MathJax = {
    tex: {
      inlineMath: [['$', '$'], ['\\(', '\\)']],
      displayMath: [['$$', '$$'], ['\\[', '\\]']],
      processEscapes: true,
    },
    options: {
      skipHtmlTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code'],
    },
    startup: {
      typeset: false,
    }
  };
  
  initialized = true;
};

export const renderMathJax = (element?: HTMLElement) => {
  if (!window.MathJax) {
    console.warn('MathJax not loaded');
    return Promise.resolve();
  }
  return window.MathJax.typesetPromise(element ? [element] : undefined);
};

2.2 在Vue组件中使用

创建一个基础的使用示例:

<template>
  <div class="formula-container">
    <input v-model="formula" placeholder="输入LaTeX公式" />
    <div class="rendered-formula" v-html="'$$' + formula + '$$'" ref="formulaEl"></div>
  </div>
</template>

<script setup lang="ts">
import { ref, watch } from 'vue';
import { initMathJax, renderMathJax } from '@/utils/mathjax';

const formula = ref('E = mc^2');
const formulaEl = ref<HTMLElement>();

// 初始化MathJax
initMathJax();

watch(formula, async () => {
  await renderMathJax(formulaEl.value);
}, { immediate: true });
</script>

3. 高级封装方案

3.1 创建可复用的Composable

利用Vue3的组合式API,我们可以将数学公式渲染逻辑封装为可复用的composable:

// src/composables/useMathJax.ts
import { onMounted, ref, watch } from 'vue';
import { initMathJax, renderMathJax } from '@/utils/mathjax';

export default function useMathJax(initialFormula: string) {
  const formula = ref(initialFormula);
  const element = ref<HTMLElement>();
  
  const render = async () => {
    if (element.value) {
      await renderMathJax(element.value);
    }
  };
  
  onMounted(() => {
    initMathJax();
    render();
  });
  
  watch(formula, render);
  
  return {
    formula,
    element,
    render
  };
}

3.2 构建公式渲染组件

基于上述composable,我们可以创建一个更完善的公式渲染组件:

<template>
  <div class="math-renderer">
    <slot name="input" v-if="editable">
      <input 
        v-model="formula" 
        :placeholder="placeholder"
        @keydown.enter="handleSubmit"
      />
    </slot>
    <div 
      class="math-content" 
      :class="{ 'has-error': error }"
      v-html="displayFormula" 
      ref="mathElement"
    ></div>
    <div v-if="error" class="error-message">
      公式渲染错误: {{ error }}
    </div>
  </div>
</template>

<script setup lang="ts">
import { computed, ref, watch } from 'vue';
import useMathJax from '@/composables/useMathJax';

const props = defineProps({
  modelValue: {
    type: String,
    default: '',
  },
  mode: {
    type: String,
    default: 'display', // 'inline' 或 'display'
    validator: (value: string) => ['inline', 'display'].includes(value),
  },
  editable: {
    type: Boolean,
    default: true,
  },
  placeholder: {
    type: String,
    default: '输入LaTeX公式...',
  },
});

const emit = defineEmits(['update:modelValue', 'submit']);

const { element: mathElement, render } = useMathJax(props.modelValue);
const error = ref('');

const displayFormula = computed(() => {
  const wrapper = props.mode === 'display' ? '$$' : '$';
  return wrapper + props.modelValue + wrapper;
});

watch(() => props.modelValue, async () => {
  try {
    error.value = '';
    await render();
  } catch (err) {
    error.value = err instanceof Error ? err.message : String(err);
  }
});

const handleSubmit = () => {
  emit('submit', props.modelValue);
};
</script>

<style scoped>
.math-renderer {
  margin: 1rem 0;
}
.math-content {
  margin: 0.5rem 0;
  min-height: 2rem;
}
.has-error {
  color: #ff4d4f;
}
.error-message {
  color: #ff4d4f;
  font-size: 0.8rem;
}
</style>

4. 性能优化与最佳实践

4.1 动态加载MathJax

为了减少初始加载时间,我们可以实现MathJax的动态加载:

// src/utils/mathjax-loader.ts
export const loadMathJax = (): Promise<void> => {
  if (window.MathJax) {
    return Promise.resolve();
  }

  return new Promise((resolve, reject) => {
    const script = document.createElement('script');
    script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js';
    script.async = true;
    script.onload = () => resolve();
    script.onerror = () => reject(new Error('MathJax加载失败'));
    document.head.appendChild(script);
  });
};

4.2 批量渲染优化

当页面中有大量公式需要渲染时,应该避免频繁触发重绘:

// 在composable中添加批量渲染逻辑
export default function useBatchMathJax() {
  const elements = new Set<HTMLElement>();
  let renderScheduled = false;
  
  const scheduleRender = () => {
    if (renderScheduled) return;
    
    renderScheduled = true;
    requestAnimationFrame(async () => {
      await renderMathJax();
      renderScheduled = false;
    });
  };
  
  const registerElement = (el: HTMLElement) => {
    elements.add(el);
    scheduleRender();
    return () => {
      elements.delete(el);
    };
  };
  
  return {
    registerElement
  };
}

4.3 自定义配置扩展

MathJax 3.0支持丰富的配置选项,可以根据项目需求进行定制:

interface MathJaxConfig {
  tex?: {
    packages?: string[];
    inlineMath?: [string, string][];
    displayMath?: [string, string][];
    processEscapes?: boolean;
    tags?: 'ams' | 'all' | 'none';
  };
  chtml?: {
    scale?: number;
    minScale?: number;
    matchFontHeight?: boolean;
  };
  svg?: {
    scale?: number;
    minScale?: number;
    matchFontHeight?: boolean;
  };
}

export const configureMathJax = (config: MathJaxConfig) => {
  if (!window.MathJax) {
    throw new Error('MathJax not loaded');
  }
  
  window.MathJax = {
    ...window.MathJax,
    ...config
  };
};

5. 实际应用案例

5.1 数学考试系统集成

在在线考试系统中,我们需要同时展示题目和解析中的公式:

<template>
  <div class="exam-question">
    <h3>题目</h3>
    <MathRenderer 
      :model-value="question.stem" 
      :editable="false"
    />
    
    <div class="options">
      <div 
        v-for="(option, index) in question.options" 
        :key="index"
        class="option"
      >
        <MathRenderer 
          :model-value="option" 
          mode="inline"
          :editable="false"
        />
      </div>
    </div>
    
    <button @click="showSolution = !showSolution">
      {{ showSolution ? '隐藏' : '显示' }}解析
    </button>
    
    <div v-if="showSolution" class="solution">
      <h4>解析</h4>
      <MathRenderer 
        :model-value="question.solution" 
        :editable="false"
      />
    </div>
  </div>
</template>

5.2 科学论文编辑器

构建一个支持LaTeX输入的富文本编辑器:

<template>
  <div class="scientific-editor">
    <textarea v-model="rawContent" @keydown.tab.prevent="handleTab"></textarea>
    
    <div class="preview">
      <div 
        v-for="(block, index) in parsedBlocks" 
        :key="index"
        class="content-block"
      >
        <div v-if="block.type === 'text'">{{ block.content }}</div>
        <MathRenderer 
          v-else
          :model-value="block.content"
          :editable="true"
          @submit="updateFormula(index, $event)"
        />
      </div>
    </div>
  </div>
</template>

<script setup lang="ts">
import { computed, ref } from 'vue';

type ContentBlock = {
  type: 'text' | 'math';
  content: string;
};

const rawContent = ref('');
const activeBlockIndex = ref(-1);

const parsedBlocks = computed<ContentBlock[]>(() => {
  // 解析内容,识别$$...$$和$...$公式块
  const regex = /(\$\$.*?\$\$|\$.*?\$)/s;
  const parts = rawContent.value.split(regex);
  
  return parts.filter(Boolean).map(part => {
    const isMath = (part.startsWith('$$') && part.endsWith('$$')) || 
                  (part.startsWith('$') && part.endsWith('$'));
    return {
      type: isMath ? 'math' : 'text',
      content: isMath ? part.slice(isMath ? 2 : 1, -2) : part
    };
  });
});

const updateFormula = (index: number, newFormula: string) => {
  const block = parsedBlocks.value[index];
  if (block.type === 'math') {
    block.content = newFormula;
    // 更新原始内容
    const wrapper = block.content.includes('\n') ? '$$' : '$';
    rawContent.value = parsedBlocks.value.map(b => 
      b.type === 'math' ? wrapper + b.content + wrapper : b.content
    ).join('');
  }
};

const handleTab = () => {
  // 实现Tab键在文本和公式间切换焦点
};
</script>

在实现这些高级用例时,有几个关键点需要注意:

  1. 公式编辑体验:提供实时预览功能,但考虑添加防抖机制避免频繁渲染
  2. 错误处理:优雅地处理不合法的LaTeX语法,给出有意义的错误提示
  3. 无障碍访问:确保生成的数学内容对屏幕阅读器友好
  4. 主题一致性:调整MathJax的输出样式以匹配应用的整体设计风格

通过将这些技术与Vue3的响应式系统深度整合,我们可以构建出既强大又用户友好的科学内容展示和编辑界面。

Vue项目实战:利用KaTeX优雅渲染LaTeX数学公式 本文详细介绍了在Vue项目中使用KaTeX优雅渲染LaTeX数学公式的实战技巧。通过对比MathJax,突出KaTeX的轻量级和快速渲染优势,提供CDN和NPM两种引入方式,并分享核心渲染方法、高级应用技巧及性能优化方案。适合需要在Vue中高效展示数学公式的开发者,尤其适用于教育类应用和技术文档场景。 阅读详情

相关推荐

在uniapp中优雅渲染DeepSeek返回的markdown与数学公式

本文详细介绍了在uniapp中优雅渲染DeepSeek返回的markdown内容与数学公式的完整解决方案。通过markdown-it解析器结合数学公式插件,实现跨平台兼容的markdown渲染,解决uniapp中公式显示乱码问题,提升AI生成内容在前端的展示效果。

y2z3a4b5c的博客 770

Vue3 —— MathJax的使用方法(渲染数学公式)

本文主要介绍MathJax在vue3中的使用方法

Bonsoir777的博客 4813

独立博客搭建指南:静态站点生成器实战与数字主权构建

独立博客是一种以个人为中心、脱离平台依赖的数字存在形式,其核心在于技术自主、内容持久与表达主权。基于静态站点生成器(如Hugo、Jekyll)构建的博客,通过纯静态HTML输出、零数据库设计和CDN托管,实现零运维、高安全与强抗风险能力。相比WordPress等动态系统,它天然适配现代前端工程实践,支持自动化部署、语义化归档与离线访问,成为技术人沉淀方法论、研究者长期存档、创作者重建内容主权的理想载体。本文聚焦Flicker1985博客案例,深入解析从命名哲学、Hugo选型、CSS变量定制到Cloudfla

天下无双 339

vue3 mathjax 数学公式

新建文件@/util/mathjax.js。main.js中引入。

xsjCoding的博客 3075

mathjax-vue:MathJax 的 Vue 组件

mathjax-vue MathJax 的 Vue 组件 安装 Vue2 // npm npm i --save mathjax-vue // yarn yarn add mathjax-vue Vue3 // vue 3 npm i --save mathjax-vue3 // yarn yarn add mathjax-vue3 用法 import MathJax, { initMathJax, renderByMathjax } from &#39;mathjax-vue&#39; // Rewrite pageReady method, optimizing MathJax as required rendering and render to avoid them // :red_exclamation_mark::red_exclamation_mark: For example &#39;<span>$$Not a formula$$</span>&#39; is not

vue-mathjax:Mathjax的Vue插件

Vue-Mathjax 适用于Mathjax的Vue.js插件 目录 安装 npm install --save vue-mathjax 用法 :red_exclamation_mark: :red_exclamation_mark: 不要忘记导入Mathjax.js: [removed][removed] import VueMathjax from &#39;vue-mathjax&#39; Vue.use(VueMathjax) 或者 import {VueMathjax} from &#39;vue-mathjax&#39; export default { ... components: { &#39;vue-mathjax&#39;: VueMathjax }, ... <templat

MathJax 全栈数学公式渲染实战指南:让复杂数学公式在浏览器中完美呈现

在当今技术驱动的教育、科研和学术领域,如何在网页中优雅地展示复杂的数学公式一直是开发者的痛点。MathJax 作为一款开源的 JavaScript 显示引擎,能够将 LaTeX、MathML 和 AsciiMath 数学公式无缝渲染到所有现代浏览器中,无需任何插件或特殊设置,彻底解决了数学公式在网页显示中的兼容性问题。 ## 🚀 快速集成:三行代码实现数学公式渲染 对于大多数 Web 应用,

gitblog_01053的博客 965

VaTex:vue latex的一个插件(基于katex),支持vue2和vue3

增值税 vue latex 公式显示插件,适用于 Vue2/Vue3。 简单封装katex。 也是的vue3版本,参考了很多代码,在此感谢。 安装 安装 vue-katex 与 katex 作为对等依赖 # With NPM npm i vatex katex # With Yarn yarn add vatex katex Vue2 开发者需要安装 composition-api yarn add @vue/composition-api 入门 Vue3 全球注册 import { createApp } from &#39;vue&#39; import VueLatex from &#39;vatex&#39; app . use ( VueLatex ) . mount ( &#39;#app&#39; ) 然后 < vue-latex : expression = " &#39; \\ frac{a_i}{1+x}

MathJax终极指南:5分钟快速实现网页数学公式渲染

你是否曾经为在网页上显示复杂的数学公式而烦恼?传统的图片方式不仅加载慢,而且无法复制、搜索和缩放。MathJax正是解决这一痛点的完美方案!作为一款开源JavaScript库,MathJax能够在所有浏览器中高质量地渲染LaTeX、MathML和AsciiMath数学公式,无需任何插件或特殊设置。 ## 🤔 为什么选择MathJax? 在网页开发中展示数学公式一直是个挑战。传统方法要么使用静

gitblog_07393的博客 489

Java本地AI推理初体验:Jlama+LangChain4j构建离线问答系统

Jlama 是专为 Java 生态设计的现代化大型语言模型(LLM)推理引擎,旨在让开发者无需依赖外部服务即可直接在 Java 应用中运行本地化模型推理。本文将结合Jlama + langchain4j 实现一个本地可运行的简单问答Demo。

2501_92589102的博客 407

从FOC到你的无人机:深入浅出讲透Clark/Park变换在无刷电机控制中的核心作用

本文深入解析Clark变换与Park变换在无刷电机控制中的核心作用,揭示其如何将三相交流电转换为旋转坐标系下的直流量,实现无人机电机的高效精准控制。通过STM32硬件加速和工程实践案例,展示这对数学变换如何成为FOC算法的神经中枢,大幅提升系统响应速度和能效表现。

weixin_42628941的博客 169

LaTeX公式渲染进化论:KaTeX在技术文档中的实践革命

本文探讨了KaTeX在技术文档中实现LaTeX公式渲染的革命性实践,对比了KaTeX与MathJax的性能差异,并展示了其在VuePress和Vue中的集成应用。通过性能优化和跨平台解决方案,KaTeX显著提升了公式渲染效率和用户体验,成为现代技术文档的首选工具。

weixin_29008805的博客 608

SpringBoot3 + Vben5.0实战:从零搭建企业级管理后台(附完整代码)

本文详细介绍了如何从零开始,使用SpringBoot3与Vben5.0技术栈搭建现代化企业级管理后台。通过对比分析,阐述了该组合在开发效率、性能(如虚拟线程)和权限模型(RBAC)方面的优势,并提供了从项目初始化、核心功能开发到部署运维的完整实战指南,帮助开发者快速构建高性能、易维护的后台系统。

weixin_29306317的博客 172

如何快速集成数学公式:面向开发者的完整指南

MathJax是一个功能强大的开源JavaScript库,专门用于在所有现代浏览器中高质量地渲染数学公式。无论您是在开发教育平台、技术文档、学术网站还是科学计算应用,MathJax都能让LaTeX、MathML和AsciiMath数学公式以优雅的方式呈现在网页上。这个工具的核心价值在于它无需用户安装任何插件或特殊软件,只需几行代码就能实现完美的数学公式显示效果。 ## 🎯 为什么选择MathJ

gitblog_00662的博客 863

R语言实战:从Raw Counts到TPM/FPKM的完整转换指南(含代码调试技巧)

本文详细介绍了在R语言环境中将RNA-seq原始计数(raw counts)转换为TPM/FPKM值的完整流程,包含代码实现和常见错误调试技巧。通过具体案例演示如何正确处理基因长度和测序深度因素,实现表达量标准化,为生物信息学分析提供可靠数据基础。特别适合需要进行转录组数据分析的研究人员和实验室技术人员参考。

weixin_28559803的博客 478

数学建模更新10(蒙特卡罗模拟)

蒙特卡罗模拟一.目录二.引例1:布丰投针实验1.投针步骤2.思路3. 历史实验者二.蒙特卡罗模拟概述1.定义2.提出3.原理4.讨论三.应用实例1.三门问题【1】问题【2】代码2.模拟排队问题【1】题目【2】引入参数【3】总结题目信息【4】过程可视化【5】一些推导公式【6】代码3.有约束的非线性规划问题【1】问题的分类【2】例子【3】推导过程【4】代码 一.目录 二.引例1:布丰投针实验 1.投针步骤 步骤: 1:取一张白纸,在上面画出许多条间距为a的平行线 2:去一根长度为l的针,随机的向纸张上投掷n次

沉晨尘宸的博客 3042

数学公式渲染选型避坑指南:为什么90%的教育类项目都选了KaTeX?

本文深入剖析了教育类项目为何普遍选择KaTeX作为数学公式渲染引擎。通过对比测试,KaTeX在性能、移动端兼容性、开发集成成本及服务端预渲染方面优势显著,尤其适合高并发、多端一致的教育场景。其轻量、快速的特点,使其成为兼顾用户体验与开发效率的必然选择。

berry的博客 1053

短距激光雷达专业讲解:定义、架构、技术路线与选型逻辑

短距激光雷达,通常指有效探测距离不大于 50 米的激光雷达产品。它主要服务于服务机器人、扫地机器人、AGV/AMR、无人机、智能手机、AR/VR、工业安全等中近距感知场景。它与车载中长距激光雷达的最大区别,不是“探测距离短一点”,而是整套工程目标不同。短距激光雷达的核心诉求是:小体积、低成本、高帧率、强抗光、嵌入式集成。单价从百元级扫地机模组,到数千元级工业 3D 雷达不等。一句话概括:中长距车载激光雷达追求远距离、高可靠、车规寿命;

致力于lidar应用开发 151

nabla.nvim与其他数学插件的对比:为什么选择nabla.nvim的完整指南

在Neovim生态系统中,数学公式渲染一直是一个挑战。对于需要在编辑器中处理科学笔记、数学文档或技术论文的用户来说,选择一个合适的数学插件至关重要。nabla.nvim作为一款专业的LaTeX数学公式渲染插件,在众多选项中脱颖而出。本文将深入对比nabla.nvim与其他数学插件的优劣,帮助你做出明智的选择。 ## 🔍 nabla.nvim是什么? nabla.nvim是一款专为Neovim

gitblog_00588的博客 1128

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

【数字IC刷题】华为海思数字IC笔试题(1)详细解析版

MoorePlus的博客 4221

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

大学生课程项目AI编程工具实战指南:2026年四层能力与合规边界

AI编程工具在高校课程项目中已从‘可选插件’升级为‘生存基础设施’。其本质是面向受限场景的智能协作者——需理解C++手写红黑树、Spring Boot 2.7版本锁死、教材伪代码逻辑锚定等教学特异性约束。技术原理上,依赖长上下文建模(128K token)、多模态提示理解(PPT/流程图解析)及框架感知生成;核心价值在于将‘能写代码’升维至‘能交作业’,覆盖语法补全、算法骨架、跨文件集成与学术合规四层穿透。典型应用场景包括《数据结构》手写实现辅助、《数据库原理》ER图转代码、《嵌入式系统》芯片手册对齐等。关

weixin_30439067的博客 327

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

基于MuPAD引擎构建交互式数学学习平台MathExplorer的设计与实现

计算机代数系统(CAS)是处理符号数学运算的核心工具,它能够执行微积分、方程求解、矩阵运算等复杂数学操作,其原理在于将数学表达式作为符号对象进行处理和变换。这项技术的价值在于将人类从繁琐的代数推导中解放出来,极大地提升了科研、工程和教育领域的数学处理效率与精度。其应用场景广泛覆盖了数学建模、科学计算和交互式学习等领域。本文聚焦的MathExplorer项目,正是这一技术的典型工程实践,它通过封装成熟的MuPAD引擎,构建了一个**交互式**的数学探索环境。该项目采用分层架构,将用户界面、交互逻辑与核心计算服

weixin_30667649的博客 463

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

6个真正提升生产力的浏览器扩展技术解析

浏览器扩展已超越简单功能增强,成为现代数字工作流的底层协处理器。基于WebExtensions标准的扩展通过沙盒隔离、本地化NLP计算、WebRTC点对点同步、CSS-in-JS动态净化等核心技术,实现信息可信校验、跨设备剪贴板、阅读干扰消除、长文语义解析、PDF可编程处理与隐私请求镜像等关键能力。相比依赖云端服务或粗粒度权限的传统工具,这类扩展强调数据主权、内存可控与场景精准适配,尤其适用于内容创作、学术研究与企业文档协同等高要求桌面端工作场景。

weixin_30471561的博客 408

Vue3中使用Mathjax

随着AI流行,各互联网公司都在开始研发AI相关的产品,比如:AI问答、AI写作、AI阅读等。一般是前端用Fetch 进行流式请求,返回markdown格式的数据,返回的内容不可避免的就会出现各种数学公式、Latex等公式,这时候Mathjax 库旧派上了用场。

qq_38902432的博客 1552

vue配置mathjax3

1.index.html⾥引⼊mathjax HTML <script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" id="Ma thJax-script"></script> 2.新建globalVariable.js⽂件,写⼊操作mathjax的配置和渲染函数 let isMathjaxConfig = false // ⽤于标识是否配置 2 const initMat.

前端程序猿的博客 3274
上一篇: VirtualBox老版本真的更稳定?实测6.1.16 vs 7.0.10性能差异与兼容性指南
下一篇: DC-9靶机渗透实战:从SQL注入到端口敲门,手把手教你玩转Vulnhub
糖果HTML
博客等级 码龄3年 76粉丝 1357原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值