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

Ace Code Editor : Caching mode object

本文关键字:模式 对象 缓存 代码 编辑器 Ace      更新时间:2023-09-26

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

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

我遇到的问题是,每次设置模式时,都会从服务器获取json工作程序。设置模式似乎启动了网络工作者,而网络工作者必须从url中获取代码。

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

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

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