我已经在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而不是加载其自己的副本吗?
答案 0 :(得分: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使用捆绑的库,而不是第二次导入它。