0

我已经在 Web 应用程序中使用 Ace 和 Webpack。我也成功地将 Jodit 添加到了 Web 应用程序中。

不幸的是,Jodit 尝试使用一些自定义脚本加载机制来动态加载它自己的 Ace 实例。

Jodit 开发人员建议将 Ace URL 更改为./node_modules/ace-builds/src-min/ace.js( https://github.com/xdan/jodit/issues/48#issuecomment-387067777 ) 但当然这不使用 Webpack 捆绑的 Ace 副本。

尽管 Jodit 和两个 Ace 实例都可以工作,但最好不要有两个不同的 Ace 实例。

我可以以某种方式将 Jodit 配置为使用 Ace 的捆绑版本而不是加载自己的副本吗?

4

1 回答 1

0

在对 Jodit 源进行了一些挖掘之后,这很容易。当它们在全局对象中可用时,Jodit 会选择捆绑的库。

添加这些行之后,Jodit 不再尝试动态加载 Ace,而且 Ace 本身也可以找到它的模式和主题:

require('ace-builds/src-noconflict/ace')
require('ace-builds/src-noconflict/theme-idle_fingers') // Default theme used by Jodit
require('ace-builds/src-noconflict/mode-html')
// ...
new Jodit(el) // No additional libraries will be loaded.

为了使用自定义主题,这也可以:

require('ace-builds/src-noconflict/ace')
require('ace-builds/src-noconflict/theme-sqlserver')
require('ace-builds/src-noconflict/mode-html')
// ...
new Jodit(el, { sourceEditorNativeOptions: { theme: 'ace/theme/sqlserver' } })

PS:这也适用于 js-beautify:

window.html_beautify = require('js-beautify').html_beautify

在此之后,Jodit 使用捆绑的库而不是第二次导入它。

于 2019-07-02T05:50:03.300 回答