Wide - 使用Golang开发基于Web的IDE团队
jopen
10年前
Wide 是使用Golang开发基于Web的IDE团队 。
Wide 的由来
-
团队的 IDE:
-
安全可靠:项目源代码实时保存在服务器上,开发者的机器崩溃不会丢失任何源代码
-
统一环境:服务器统一配置开发环境,开发者本机无需任何额外配置
-
开箱即用:5 分钟搭建服务器;开发者打开浏览器即可开发、调试
-
版本控制:每个开发者拥有自己的源代码仓库,随时可和主干保持同步
-
基于 Web 的 IDE:
-
只需要浏览器就能进行开发
-
跨平台,甚至在移动设备上
-
易进行功能扩展
-
易与其他系统集成
-
极客体验
-
商业-开源的一次尝试:会推出专门为企业定制的 Wide,贴近开发流程
-
目前较为流行的 Go IDE 都有一些缺陷或遗憾:
-
文本编辑器类(vim/emacs/sublime/Atom 等):对于新手门槛太高,搭建复杂
-
插件类(goclipse 等):需要原 IDE 支持,不够专业
-
LiteIDE:界面不够 modern :p
-
没有团队开发体验
-
Go IDE 很少,用 Go 本身开发的 IDE 更是没有,这是一个很好的尝试
特性
-
代码高亮、折叠:Go/HTML/JavaScript/Markdown 等
-
自动完成:Go/HTML 等
-
编译检查:编辑器提示编译错误
-
格式化:Go/HTML/JSON 等
-
运行:支持同时运行多个程序,方便联调
-
调试:基于 gdb 的调试系统
-
多用户:团队开发,方便协作
-
代码导航:跳转到声明,查找使用,文件搜索等
-
Shell:连接到服务器执行命令
-
Web 开发:前端(HTML/JS/CSS)开发支持
-
go tool:go get/install/fmt 等
-
Git 整合:常用 git 命令可视化操作
文档
架构
Build & Run
- A browser tab corresponds to a Wide session
- Execution output push via WebSocket
Flow:
- Browser sends
Build
request - Server executes
go build
command viaos/exec
2.1. Generates a executable file - Browser sends
Run
request - Server executes the file via
os/exec
4.1. A running process
4.2. Execution output push via WebSocket channel - Browser renders with callback function
ws.onmessage
Code Assist
- Autocompletion
- Find Usages
Flow:
- Browser sends code assist request
- Handler gets user workspace of the request with HTTP session
- Server executes
gocode
/ide_stub
3.1 Sets environment variables (e.g. ${GOPATH})
3.2gocode
withlib-path
parameter