一款非常不错的Cloud IDE,云端IDE必将是未来的趋势?

介绍

Eclipse Theia 是开源的、可扩展的平台,通过使用最先进的web技术开发支持多语言的云端和桌面端IDE。目前在Github上有6k+颗星,700+次fork。贡献者和支持者都是来自Google、IBM、SAP、RedHat、TypeFox、ERICSSON、ARDUINO等厂商。基于LSP(Language Server Protocol)构建的Theia,目前支持JavaScript、Java、Python等60多种语言。Theia,通过语言和调试服务器协议支持多种语言,同时支持云端IDE和桌面IDE,使用Javascript的UI库打造现代的GUI界面,它为终端用户提供一个成熟的多语言IDE,从而打造一款类似IDE的产品平台。

特性

Eclipse Theia 具有以下特性:

1、云端&桌面。不管是需要Web版还是桌面版,或者两者都需要。使用theia,可以开发一个定制化的IDE,即可以在浏览器里,也可以在本地以桌面应用程序启动。

2、厂商中立。Theia项目是由Eclipse基金会(Eclipse Foundation)托管,该基金会是一家非盈利公司,由不同的社区开发。与其他“开源”项目不同,在开放源代码基金会托管的项目会受到保护,不受单个厂商决策的影响。

3、可扩展。Theia以模块化的方式设计,允许扩展者或采用者定制化和扩展它的各个方面。在package.json文件里列出了所有需要的扩展,这样就可以轻松的编写一个个性化的IDE产品。通过实现自己的扩展来添加新功能,提供了非常好的灵活性。

试用

可以在Gitpod里试用Theia,如下界面是工作空间,这里可以搜索Gitpod里的代码库,会显示代码库的基本信息,比如:代码库名称和地址、版本控制信息、最近运行时间等。点击“open”即可打开代码空间。

概览

Theia工作台是由任意数量的打开的视图和编辑器组成,这些视图和编辑器可以通过拖拽的形式任意排列。下面是Theia的主界面,任意一个面板都可以自由拖拽。这个布局和本地IDE差别不大,左侧是项目列表,中间是代码编辑区,右侧是预览区,这个布局个人感觉还是不错。

搜索功能

为了提高检索效率,Theia提供了强大的搜索功能。

代码搜索

打开左侧面板中的搜索框,输入关键字后会立即显示检索结果并高亮显示。搜索可以限制大小写、完全匹配和正则表达式。搜索结果以文件分组并显示匹配关键字的数量。单击匹配行会在编辑器显示。点击...显示高级搜索。

文件搜索

快捷键Ctrl+P会打开文件检索框,按文件名检索,默认情况下,隐藏文件和ignored文件不显示。

类型搜索

快捷键Ctrl+O会打开类型检索框,按类型名进行检索。

导航器搜索

当选中项目的文件导航器后,直接输入要检索的关键字,就会高亮显示符合关键字的文件名。这里有个不足是,只能在当前展开的文件中检索。如果要搜索文件,最好使用文件搜索功能。

文件内搜索

文件内的搜索和替换也是使用快捷键Ctrl+F,打开搜索和替换框,与其他工具的使用方式一样。

代码补全

Theia也具体代码智能提示的功能。

Git集成

Theia集成了Git并提供了方便的UI界面供开发人员查看,比如作者的提交信息、Git的状态栏、分支和标签、变更指示、Blame Annotations、合并冲突、查看Diff以及Git的历史记录等。

提交信息

Git视图自动添加到左侧面板中,包括三个主要的区域,最上面是输入commit 信息,也提个了好多基本的Git命令。下面是提交文件部分,列出了变更的文件,包含两个部分:Staged Changed和 Changed,下面显示的是未暂存的文件。

在Git视图的下面显示着最近提交的信息。在最下面的蓝色的状态栏显示Git的状态,包含:代码库、当前分支以及这个分支的状态(+*!),通过点击分支名,可以执行git checkout命令。如果当前分支有远端分支,可以执行刷新按钮进行同步操作。

分支管理

可以直接在命令行面板创建或检出分支。如下图所示。如果新建一个分支,输入一个分支名称,按回车键即可。

变更指示

当打开一个处于版本控制中的文件,对该文件进行修改,变更指示器会显示变更的状态。

红色表示该行已经被删除。绿色表示新增行。蓝色表示修改行

合并冲突

Theia会识别合并冲突,并高亮显示这些差异并提供内联操作来接受本地或引入的变更,一旦解决了冲突,就可以准备暂存和提交这些变更。

查看Diff

双击修改的文件即可打开diff查看视图,左侧编辑器是处于索引状态,右侧编辑器是工作空间的状态。

提交历史

Theia里提供了多种查看历史的方式,可以查看单个文件的提交历史,也可以查看当前代码库的提交历史。

Pull Request

在Gitpod里用的是标准的Github开发流,每个任务都是以一个Github issue开始,在issue里描述这个任务、缺陷或特性,并且记录所有的讨论和相关的提交。

要启动一个Gitpod空间,在issue页面,点击“Gitpod”按钮,会打开一个开发空间。在底部状态栏会显示创建的一个本地分支GH-{issue-number}.,如果打开Git视图,在提交信息框中已经有"Fixes...."内容,这样当这个提交合并后就会自动关闭这个Issue。

接下来在这个分支上,可以编写代码,解决问题,然后就将变更作为一个pull request进行提交。在Theia里,有Pull Request视图,可以更改标题、描述,甚至不同的目标分支,一起准备就绪后,点击 Create Pull Request

创建完后,在

Pull Request视图会提供评审功能,可以给评审人留言,打开需要评审的文件,在代码行左侧需要添加评论的地方单击,即可添加评论。

这些评论会在会话视图显示,一旦同步到github,这些评论也会在Pull Request视图里显示。

Code Review

Gitpod基于Theia实现了Code Review的功能,当提交了PR后,会在Pull Request视图打开PR变更文件列表,双击文件名称会显示Diff视图,在Diff编辑器中浏览变更文件和审核代码。

还可以添加行间评论,添加的评论会在会话视图里显示,点击评论能够定位到代码行。

总结

对于开发人员来说,IDE是开发人员完成开发的场所。通过IDE能够集成与需求管理、代码评审、版本控制、甚至触发CICD构建,以及构建的状态,能够大大的提高开发人员的效率。

DevOps的目的就是提高效率和代码质量,IDE是一个非常好的,提高开发人员的效率和代码质量的地方。Cloud IDE肯定是未来的趋势,开发人员的不会再因为IDE环境的配置花费时间,也会因为IDE环境配置得不同导致开发运行出现问题。DevOps项目组可以针对Cloud IDE进行统一设置,统一控制,真正实现开发态的管控和提效。

Cloud IDE也能很好的解决代码必须下载到本地才能开发的问题,从而解决了代码泄露问题,对于对代码安全要求较高的企业,这个或许是个不错的选择。