Ace代码编辑器:缓存模式对象

时间:2015-03-04 17:56:45

标签: javascript ace-editor

我有一个webapp,我必须在多个地方显示ace编辑器。所以我有一个通用的例程,用一个给定的根元素(咖啡中的代码)加载ace编辑器

editor = window.ace.edit(root)
editor.setTheme("ace/theme/github")
editor.getSession().setMode("ace/mode/json")

我遇到的问题是,每次设置模式时,都会从服务器获取json-worker。似乎设置模式启动Web工作者,Web工作者必须从URL获取代码。

我已尝试缓存该模式的实例并进行设置,但这似乎根本不会改变行为。

有没有办法让worker js加载一次,然后在后续使用中重用它,而不从服务器重新加载?

1 个答案:

答案 0 :(得分:0)

这是不可能的,因为每个会话都会创建自己的工作者。在主线程中将worker的源代码作为文本加载,并使用它来创建blob对象将比在工作者中多次加载它更加困难且性能更低。 如果您只关心网络提取,请尝试为该文件设置适当的缓存标头。如果您只想为所有编辑器生成一个工作器,则必须修改ace。您可以使用github创建功能或拉取请求。