介绍
是蚂蚁云研发团队打造的纯前端IDE基础框架。与我们传统的IDE相比,最大的特点就是不需要容器,只需要浏览器就可以运行Web IDE。在保证体验一致的基础上,具有启动快、定制灵活、接入便捷等特点。
在对接这样的内部场景的过程中,蚂蚁研发效率云研发团队封装了一个纯前端、极速版的IDE框架,不需要容器资源,只需要一个浏览器就可以具备代码阅读、语法高亮、代码编写和其他能力。 ,通过开放的插件系统,支持Git、Git等Git辅助能力、多语言服务在线索引、以及基于wasm的代码运行能力。
在蚂蚁集团,广泛应用于代码阅读、代码评审、冲突解决、在线笔试、代码扫描报告查看、产品预览、SQL编辑等场景。此外,我们还与CCF、Atom Git、小程序云性能等代码托管平台有深度合作。
建筑设计组合能力
默认提供56个基本IDE模块包和丰富的IDE风格组件。集成商可以自由组合自己的业务场景,形成不同的IDE形态。
定制能力
集成商可以通过自定义模块调用IDE的各个实例方法,实现自己的复杂业务逻辑;通过贡献点机制,可以深度参与IDE的各个生命周期。
替代能力
通过自主开发的依赖注入容器(IOC),整个框架代码遵循依赖倒置原则(DIP),集成商可以轻松替换框架的默认视图和逻辑实现。
支付宝小程序云性能IDE
为了保证框架能够同时运行在Web和环境上,采用了前后端分离、通过抽象通信层相互调用的项目结构。
技术架构图
核心功能提供与 IDE 一致的体验
除了节点服务无法运行外,前端体验与标准产品完全一致。因此,主题、编辑等偏好设置、快捷键、菜单等操作基本相同。对于接入方来说,可以更改默认设置来实现此目的。满足业务需求。
提供基于浏览器API的本地文件存储服务
模拟文件服务以保持与 IDE 产品的一致性。提供多种文件系统服务,包括基于内存、基于远程接口的文件系统。同时,还可以通过插件的.fs API读取文件数据内容。
基于语言服务和插件生态
提供基于语言的服务,支持语法高亮和LSP语言服务,具有语法分析、智能补全、格式化等功能。同时,基于插件生态,可以对插件进行定制和复用,打造更强大的IDE。
快速便捷的访问
我们提供多个 npm 包。只需几行代码即可运行纯前端版本的 Web IDE。它具有灵活的配置。请参考配置文档。
正在解决什么问题?容器版本的问题和背景
蚂蚁研发效率云研发IDE通过其高扩展性,内部对接了很多研发场景,但在过程中发现并不是所有场景都需要研发容器。需要研发容器的场景一般依赖于运行、调试等能力,而读代码、简单写代码等轻量级场景则不需要挂载容器。而且,依赖容器可能会带来以下问题:
对于整个研发活动来说,有些场景是不需要容器的:
移除容器带来新问题
移除容器就可以满足上面的场景吗?在实践中我们发现移除容器带来了新的问题:
幸运的是,现代浏览器的功能越来越强大,上述问题都可以通过浏览器功能来解决。如果是比较常见的带有容器的IDE标准版本,那么用浏览器替换容器就是IDE提供的另一种方式:极速版本
解决方案
针对未挂载容器带来的三个典型问题,我们做了以下能力建设:
文件系统
利用该能力,在浏览器中实现了七种文件读写策略,可以应对不同的业务场景;如果内置的文件系统不能满足需求,集成商还可以提供自己的文件系统接口。
语言服务
通过与Ant代码分析团队合作,支持Java、TS、JS三种语言的离线语言服务索引(LSIF)服务。语言服务展示提交代码时可离线计算当前代码索引;同时,在Tree-的帮助下,Go、Rust、C++、Php等多种语言也支持简单的定义跳转、搜索引用等功能。同时,我们正在尝试在浏览器WASM环境下运行Node.js插件进程,提供与容器版本一致的TS/JS语言服务能力,进一步提升语言服务体验。
沟通方式的转变
将之前基于调用的方式转变为前端直接调用。前端不需要感知环境的变化。调用后端时,无需修改或替换前端实现。可以直接通过DI替代后端模块实现。
核心能力
对于标有容器的标准版本,我们主要从读、写、运行、提交等方面进行了探索:
读写、运行、提交之间的关系
下游项目是纯前端领域场景实践的解决方案框架。除此之外,还扩展了文件系统、通信系统、插件机制等模块,更好地适用于无容器的纯浏览器环境和本地客户端环境,为此类场景提供了多种解决方案。
如果 、 代表的浏览器 IDE 组件是 Web IDE 1.0,则具有上述功能的浏览器 IDE 组件是 Web IDE 2.0。 2021年4月在Ant内部上线,承担了代码阅读、代码评审、在线笔试、代码检查结果反馈、轻量级在线研发等多个场景。同年8月,.dev和. dev 已上线。相比之下,利用框架的高扩展性,可以让企业更深入地定制模块和插件,给企业很大的想象空间。