c0c00bf9c8 | ||
---|---|---|
.github/ISSUE_TEMPLATE | ||
conf | ||
editor | ||
event | ||
file | ||
i18n | ||
notification | ||
output | ||
playground | ||
session | ||
static | ||
util | ||
views | ||
.gitattributes | ||
.gitignore | ||
.header.json | ||
.header.txt | ||
.travis.yml | ||
LICENSE | ||
README.md | ||
TERMS.md | ||
coverage.sh | ||
go.mod | ||
go.sum | ||
gulpfile.js | ||
main.go | ||
package-lock.json | ||
package.json | ||
pkg.sh | ||
yarn.lock |
README.md
简介
Wide 是一款基于 Web 的 Go 语言 IDE。
动机
目前较为流行的 Go IDE 都有一些缺陷或遗憾:
- 文本编辑器类(vim/emacs/sublime/Atom 等):对于新手门槛太高,搭建复杂
- 插件类(goclipse、IDEA 等):需要原 IDE 支持,不够专业
- LiteIDE 界面不够 modern、goland 收费
- 缺少网络分享、嵌入网站可运行功能
另外,Go IDE 很少,用 Go 本身开发的 IDE 更是没有,这是一次很好的尝试。关于产品定位的讨论请看这里。
特性
基于 Web 的 IDE:
- 只需要浏览器就能进行开发、运行
- 跨平台,甚至在移动设备上
- 易进行功能扩展
- 易与其他系统集成
- 极客体验
核心功能:
- 代码高亮、折叠:Go/HTML/JavaScript/Markdown 等
- 自动完成:Go/HTML 等
- 编译检查:编辑器提示编译错误
- 格式化:Go/HTML/JSON 等
- 运行:支持同时运行多个程序
- 代码导航:跳转到声明,查找使用,文件搜索等
- Web 开发:前端(HTML/JS/CSS)开发支持
- go tool:go mod/install/fmt 等
- 项目文件导出
- UI/编辑器多主题
- 支持交叉编译
界面
主界面
跳转到文件
自动完成
主题
查看表达式
构建报错提示
交叉编译
Playground
架构
构建与运行
- 一个浏览器 tab 对应一个 Wide 会话
- 通过 WebSocket 进行程序执行输出推送
- 客户端浏览器发送
Build
请求 - 服务器使用
os/exec
执行go build
命令
2.1. 生成可执行文件 - 客户端浏览器发送
Run
请求 - 服务器使用
os/exec
执行文件
4.1. 生成进程
4.2. 运行结果输出到 WebSocket 通道 - 客户端浏览器监听
ws.onmessage
到消息后做展现
代码辅助
- 自动完成
- 查找使用
- 浏览器客户端发送代码辅助请求
- Handler 根据请求对应的 HTTP 会话获取用户工作空间
- 执行
gocode
/ide_stub(gotools)
命令
3.1 设置环境变量(${GOPATH} 为用户工作空间路径)
3.2gocode
命令需要设置参数lib-path
文档
社区
授权
Wide 使用 Apache License, Version 2 开源协议。