Web IDE 开发笔记
为什么要写这个系列的笔记
这个系列文章作为我 Web IDE 的开发心得笔记,至于为什么要做一款纯在线的 IDE 要从以下这么几点讲起。
IDE 对于程序开发的作用
写程序无非就是以人类能理解的文本形式来有规律有目的控制计算机进行计算。而当在开发规模非常小时,比如当写一个简单功能的 bash 脚本时,直接对文本文件进行编辑,直接使用 echo 或者 Vim 都可以非常简单的解决问题,当然如果 Vim 经过一些改造,某种程度上其实也是一个 IDE。但是如果程序规模一旦大了之后,就会遇到以下的一些需求。
- 代码缩进
- 语法检查
- 代码分包
- 代码高亮
- 语法提示
这些需求的满足对于写代码的人来说非常有帮助,开发者可以更多的将自己的注意力集中于实现当前的功能,而不是繁杂的语法或者其他的编程细节。在今天写代码更多的是为了实现功能,而不是为了去炫技,抱着一本魔法辞典去放魔法的时代已经过去了,更多的降低写代码的门槛以使得更多的更快的将学习者变成开发者是一个不可避免的大趋势,为了达成以上的愿景 IDE 就此诞生。
如今市面上的 IDE
在我观测的范围内如今做的比较好的桌面级 IDE 为 VS Code 以及 JetBrain 家的一些列针对各种语言特化的 IDE。 VS Code 作为免费的 IDE,其极佳的扩展性以及丰富的扩展生态被广泛的在各个领域使用。JetBrain 作为一款付费 IDE 却仍然有强大的竞争力,其核心在于专注于对各种语言的特化,使得一种开发语言就有一款专门的 IDE 来对其中的开发痛点进行补足,相比起 VS Code 来更强的代码补全,代码高亮,以及更友好的开发环境配置,唯一的可能的不足就是收费?
以上的 VS Code 和 JetBrain 作为桌面级别的IDE,用于专业开发者的开发自是极佳的,但是如果给一些刚入门的新手可能还是不够适合的,VS Code 在需要一些比较麻烦的环境配置,而且这个环节还是挺劝退的,而 JetBrain 作为一个付费 IDE 对于学习者也天然的会有畏惧心理。
而如今市面上又出现了很多在线版本的 IDE,比如老牌 IDE 厂家 eclipse 的开源在线IDE theia,还有 code-server 等等。不同于传统的桌面级 IDE,这些网页版的 IDE 做出了一些与众不同的改变,它们将 IDE 脱离桌面环境运算可以放到服务器或者容器内,基于浏览器的 V8 引擎来对 IDE画面进行渲染,当然值得一提的是现在市面上出现了这么多的网页版 IDE 很大程度上归功于微软的 VS Code 项目,因为它本质上也是一个基于 chromium 浏览器的项目,你只要打开 Help>Toggle Devloper Tools 就能发现 chrome 的 develpoer tools。微软在 github 上有大量的 IDE 相关的开源项目,比如 monaco-editor,这是 VS Code 以及一众在线 IDE 的编辑器组件,其作为一个网页端的文本编辑器其功能已经非常完善了,所以很多 IDE 项目其实可以很大程度上避免重复的工作,尤其是文本编辑器这种需要针对 AST 来做一些彩色渲染高亮等的重复工作。
我为什么要写一些 IDE 相关的内容
对于大多数人来说,更喜欢一些拿来即用的工具,对于工具好用就行无关其本质以及原理。但对于我个人来说,我会更好奇于事物本身的原理以及机制,拆解一些已经整合好的东西能给我带来一些满足感,或许我有一些结构主义的倾向