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

Ace Code Editor : Caching mode object

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

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

我遇到的问题是,每次设置模式时,都会从服务器获取 json-worker。似乎设置模式会启动 web worker,而 web worker 必须从 url.

中获取代码

我尝试缓存模式的 实例 并设置它,但这似乎根本没有改变行为。

有没有什么办法可以让worker js加载一次,在后续使用中重复使用,而不用从服务器重新加载?

这是不可能的,因为每个 session 都会创建自己的 worker。在主线程中将 worker 的源代码作为文本加载,并使用它来创建 blob object 与在 worker 中多次加载它相比会很麻烦且性能较低。 如果您只关心网络获取,请尝试为该文件设置适当的缓存 headers。如果所有编辑器只需要一个 worker,则必须修改 ace。您可以使用 github 创建功能或拉取请求。