摩纳哥编辑器:通过编辑器配置库

时间:2018-12-21 08:32:36

标签: monaco-editor

我正在建立一个包含多个monaco编辑器的页面。我目前可以通过以下方式控制要使用的库:

monaco.languages.typescript.javascriptDefaults.addExtraLib(`

        interface Product {
          foo: String;
        }

        declare const product: Product;

`, 'global.d.ts')

使用此功能,所有编辑器都必须具有完全相同的库。

是否可以通过编辑器实例而不是全局控制该行为?

1 个答案:

答案 0 :(得分:1)

长话短说:不。

问题是您通过调用IStandaloneCodeEditor创建的monaco.editor.create ()不了解当前可用并已注册的monaco.languages中的任何一个。

解析由monaco.worker完成,它们通过monaco.languages.typescript配置-对于Java和TypeScript-是静态的,不是特定于实例的,因此一个工作程序可以服务许多实例。

我相信,这项设计决定是出于效率和性能的考虑-在许多情况下,WebWorker可能有(可能)许多不同的库,效率不是很高。

还请注意,这并不是唯一无法按实例进行配置的事情:可以通过任何monaco.languages语言定义进行配置的所有内容都是全局的。

我不知道这是如何实现的,但是如果您愿意了解发生了什么,请Type- and JavaScript implementation is on GitHub(以及Monaco's base)。

尽管(可能)在性能上有些沉重,但这是适合在GitHub issue中讨论的内容。最后,如果拒绝的话,您可能也会对贡献者对摩纳哥的实施印象深刻。