CodingSouls团队项目第二阶段冲刺(2)-个人概况
第二阶段冲刺第二天:
学习使用Monaco Editor
微软之前有个项目叫做Monaco Workbench,后来这个项目变成了VSCode,而Monaco Editor(下文简称monaco)就是从这个项目中成长出来的一个web编辑器,他们很大一部分的代码(monaco-editor-core)都是共用的,所以monaco和VSCode在编辑代码,交互以及UI上几乎是一摸一样的,有点不同的是,两者的平台不一样,monaco基于浏览器,而VSCode基于electron,所以功能上VSCode更加健全,并且性能比较强大。
首先,我们自己可以设想一下,假如要自己来实现代码补全以及错误提示,我们会怎么做?
第一,我们要解析输入的文本,这时,我们就需要写一个Parser。
第二,根据Parser解析的结果来调用monaco的标注接口来标注错误的代码从而实现错误提示功能
第三,根据Parser解析的结果信息,提供上下文相关的代码候选项来实现代码补全功能。
可以看出来,实现起来难度会很大,涉及到的点很多,不过,和语法高亮一样,monaco也帮助我们实现了这些功能,目前支持html,css,ts/js,json四种语言,我们只需要引入即可。但是这边的引入可没有语法高亮那么简单。
Monaco的实现采用worker的方式,因为语法解析需要耗费大量时间,所以用worker来异步处理返回结果比较高效。我们使用的话需要两步。