摩纳哥编辑器:通过编辑器配置库
Monaco Editor: Configure libs by editor
我正在构建一个包含多个摩纳哥编辑器的页面。我目前通过以下方式控制我想使用的库:
monaco.languages.typescript.javascriptDefaults.addExtraLib(`
interface Product {
foo: String;
}
declare const product: Product;
`, 'global.d.ts')
通过使用此功能,所有编辑器都被迫使用完全相同的库。
是否可以通过编辑器实例而不是全局控制该行为?
长话短说:没有。
问题是 IStandaloneCodeEditor
you create by calling monaco.editor.create ()
has no idea of any of the monaco.languages
当前可用并已注册。
解析由 monaco.worker
s, which get - for Java- and TypeScript - configured through monaco.languages.typescript
完成,并且是静态的而不是特定于实例的,因此一个工作人员可以服务多个实例。
我相信这个设计决定是为了提高效率和性能而做出的 - 对于许多具有(可能)许多不同库的实例来说可能 WebWorker
效率不是很高。
另请注意,这不是唯一不可配置的实例:通过任何 monaco.languages
语言定义可配置的所有内容都是全局的。
我不知道这是如何实现的,但如果你愿意了解发生了什么,Type- and JavaScript implementation is on GitHub (as well as Monaco's base)。
虽然它(可能)有点重性能,但这可能适合在 GitHub issue 中讨论。最后,如果这个被拒绝了,你还不如对投稿者对摩纳哥的实现有一个印象
我正在构建一个包含多个摩纳哥编辑器的页面。我目前通过以下方式控制我想使用的库:
monaco.languages.typescript.javascriptDefaults.addExtraLib(`
interface Product {
foo: String;
}
declare const product: Product;
`, 'global.d.ts')
通过使用此功能,所有编辑器都被迫使用完全相同的库。
是否可以通过编辑器实例而不是全局控制该行为?
长话短说:没有。
问题是 IStandaloneCodeEditor
you create by calling monaco.editor.create ()
has no idea of any of the monaco.languages
当前可用并已注册。
解析由 monaco.worker
s, which get - for Java- and TypeScript - configured through monaco.languages.typescript
完成,并且是静态的而不是特定于实例的,因此一个工作人员可以服务多个实例。
我相信这个设计决定是为了提高效率和性能而做出的 - 对于许多具有(可能)许多不同库的实例来说可能 WebWorker
效率不是很高。
另请注意,这不是唯一不可配置的实例:通过任何 monaco.languages
语言定义可配置的所有内容都是全局的。
我不知道这是如何实现的,但如果你愿意了解发生了什么,Type- and JavaScript implementation is on GitHub (as well as Monaco's base)。
虽然它(可能)有点重性能,但这可能适合在 GitHub issue 中讨论。最后,如果这个被拒绝了,你还不如对投稿者对摩纳哥的实现有一个印象