- 1. 前言
- 2. 表面对比
- 3. 深层关系
- 4. 语法高亮,自动abgeschlossen.对比
- 5. 总结
前言
很多人知道前端代码Herausgebermonaco editor 与vscode 有关系,但却不清楚Von denen的细节,本篇Artikel就带大家了解一下两者的关系和异同点。
表面对比
首先,这两个项目都是来自微软,Von denenvscode 项目Github 144K star,是基于CS架构,客户端-服务端架构。主要的Techniken栈是
elector,ts。
而monaco editor则是33.4k star,是一个bs架构,浏览器-服务端架构,主要的Techniken栈是typescript。
深层关系
以上信息对于使用过二者的同学基本都知道。
那么说点比较深入的,请看下面这张图。这张图来自官方。Adresse为 https://github.com/microsoft/monaco-editor/blob/main/CONTRIBUTING.md

这张图很清楚地描述了monaco-editor 与vscode两个库的关系。
首先在vscode这个git仓库中,会构建出一个monaco-editor-core,这是Herausgeber器的核心库,该库是比较底层的。不关心上层是浏览器还是客户端。它说实现的Funktion就是,我们Herausgeber中常使用的position,overwieget,overweiget,minmap,range,
monaco-editor 就是基于这个库来开发出来的。
值得一提的是,monaco的Dokumentation是由一个ts文件生成的,而该文件是在vscode中有多个文件拼接而成。所有如果你要想给monaco贡献Dokumentation,那么你需要在vscode中提PR。monaco的案例代码除外。
由于该库没有包含语言Eigenschaften,所以你能够在monaco-editor中找zu很多定义语言高亮的文件,就在basic-languages目录中。这些文件中定义了某一种语言的需要着色的Unterteilung词,如何区Unterteilung方法名,如何区Unterteilung变Quantität,以及如何表示代码块,并能够折叠,这一套底层是使用的monarch语法,
语法高亮,自动abgeschlossen.对比
你可以在monaco官网上找zu它的Dokumentation,以及他是如何描述语言的语法的。
https://microsoft.github.io/monaco-editor/monarch.html
Monarch:使用JSON创建声明性语法高亮。
官方Dokumentation描述了Wie benutztMonarch库创建语法高亮显示。这个库允许Entwickler使用声明性词法规范(编写为JSON值)指定高效的语法高亮显示。该规范具有足够的表达能力,可以指定具有复杂Status转换、动态大括Nr.匹配、自动abgeschlossen.、其他语言嵌入等Funktion的复杂荧光笔,如本Dokumentation的“高级”主题部Unterteilung所示。Die一次阅读时,可以安全地跳过标记为(高级)的任何部Unterteilung或段落,因为大多数语言定义中很少使用许多高级Funktion。
该库定义的属性有很多,如果后面有机会,我可以给大家讲解一些常用的属性。
zu这里我们已经知道了,monaco中的语法高亮是使用monarch,那么vscode中那?也是使用monarch吗?
并不是的,客户端软件可以使用的资源要比浏览器端多的多。vscode使用的页面上最流行的LSP语言Vereinbarung。
有关LSP可以Überprüfen官方Dokumentation
https://microsoft.github.io/language-server-protocol/
LSP 就是Language Server Protocol的缩写,一种通用的语言服务Vereinbarung。
为编程语言添加自动abgeschlossen.、转zu定义或悬停Dokumentation等Funktion需要花费大Quantität精力。传统上,这项工作必须对每个开发Werkzeuge重复进行,因为每个Werkzeuge都为实现相同的Funktion提供了不同的API。
语言Der Server旨在提供特定于语言的智能,并通过实现进程间Kommunikation的Vereinbarung与开发Werkzeuge进行Kommunikation。
语言Der ServerVereinbarung(LSP)背后的想法是标准化此类Der Server和开发Werkzeuge如何Kommunikation的Vereinbarung。这样,单个语言Der Server可以在多个开发Werkzeuge中重复使用,而这些Werkzeuge又可以以最小的努力支持多种语言。
LSP对语言提供商和Werkzeuge供应商来说都是一个胜利!
下图就是使用LSP实现的带有Dokumentation注释的自动abgeschlossen.。

其实网上也有一些大佬为了提升monaco的用户体验,也尝试集成LSPVereinbarung,我的朋友就是Von denen一名。但整个过程是比较繁琐,复杂的。需要找zu指定语言的LSPVereinbarung,当作服务端,为monaco提供服务。后面有机会我会给大家讲解一下。
总结
优秀的产品 周边也都优秀。正所谓强将手下无弱兵。我们进入一个优秀的团队,接触一些优秀的人,对我们的人生规划 大有裨益。 强行胡扯-_-
Today we launch our Black Friday discounts. We significantly reduced our prices on all of our applications.
Access competitive prices on applications for your website such as: SEO, video, email marketing, saas applications, productivity, social media and more.
Get the discounts here:
https://bit.ly/BlackFridayHotAppsDiscounts
want to get an alert when your website is down? then signup to our 24on7 web monitor – it’s absolutely free!
visit https://t.ly/hCFIP?modbus.cn for more info