【问题标题】:Integrate MathJax into SystemJS build将 MathJax 集成到 SystemJS 构建中
【发布时间】:2017-04-20 17:34:14
【问题描述】:

我使用SystemJS 构建Angular 2 应用程序,我想开始在组件中使用MathJax。我安装了:

npm install --save-dev mathjax
npm install --save @types/mathjax

MathJax 现在安装在 /node_modules/mathjax 中。当我的组件执行import "mathjax" 时,会加载文件/node_modules/mathjax/MathJax.js。到目前为止一切顺利。

问题是这个文件然后尝试使用相对于项目根目录而不是 MathJax 安装目录的路径加载其他文件。

例如,MathJax.js 尝试加载

/extensions/MathMenu.js  404 Not found
/extensions/MathZoom.js  404 Not found 

正确的路径是

/node_modules/mathjax/extensions/MathMenu.js
/node_modules/mathjax/extensions/MathZoom.js

快速浏览一下源文件会发现这些 URL 是这样引用的:

[MathJax]/extensions/MathMenu.js

知道我应该在哪里解决这个问题吗?我知道我不应该更改 MathJax.js 文件本身,因为任何更改都会在更新后被覆盖。使用htaccess 或其他服务器端重定向也没有意义。

我知道我可以使用 CDN 加载工作中的 MathJax 包:

<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=AM_SVG"></script>

但是我正在尝试学习如何将库集成到我的构建设置中。

【问题讨论】:

标签: angular build systemjs mathjax


【解决方案1】:

简单地说,你不能像这样集成 MathJax(此时)。

MathJax 包含一个自定义动态模块加载器,旨在一直工作到 IE6;不出所料,它不适用于现代构建工具。

但很可能您也不想完整地集成 MathJax,因为它有几十兆字节(压缩)。现在,在实践中,您并不需要所有组件,通常开发人员需要 1 个输入 + 1 个输出 + 1 组字体,大约 500-600KB(压缩)。

如果这是一个可行的负载,那么您可以考虑构建一个您应该能够集成的自定义单文件构建(例如 this one)。

不管怎样,与现代构建工具的兼容性是明年 MathJax v3.0 的交付成果。

全面披露:我是 MathJax 团队的一员。

【讨论】:

  • 嗨,这已经 12 个多月了,有任何更新吗?您能否指导我/我们将 MAthJax 与 SystemJs 应用程序集成的最佳行动方案。当前的 npm 版本仍然是 2.*。如果 3.0 还没有准备好,你能建议可能的时间表吗?非常感谢! :-)
  • @john MathJax v3 现在处于测试阶段,应该很容易集成。
  • 非常感谢您的更新!你知道它什么时候会退出测试版吗?大概。
猜你喜欢
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多