Go to file
Liang Ding f86ca5b632
💡 增加注释
2018-12-30 14:57:43 +08:00
.github/ISSUE_TEMPLATE :octocat: 加入 GitHub Issue 模板 2018-10-07 09:57:12 +08:00
conf 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
doc update document links 2015-03-23 16:55:09 +08:00
editor 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
event 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
file 💚 修复单元测试 2018-10-28 10:07:01 +08:00
i18n 🎨 Fix #334 2018-03-13 10:53:05 +08:00
log 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
notification 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
output 💡 增加注释 2018-12-30 14:57:43 +08:00
playground 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
scm/git 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
session 🎨 跳过常规库目录扫描 2018-10-05 20:52:11 +08:00
shell 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
static ⬆️ upgrade gulp 2018-10-05 23:11:52 +08:00
tmp . 2015-10-21 12:50:56 +08:00
util 🐛 Fix #349 2018-10-28 10:03:24 +08:00
vendor Update vendor 2018-03-13 13:24:04 +08:00
views :sparklers: fixed #346 2018-10-05 21:04:40 +08:00
.gitattributes 🔧 Change repo language 2018-05-06 22:33:44 +08:00
.gitignore :sparklers: add study link 2017-04-24 00:10:16 +08:00
.header.json 📄 2018 Happy new year! 2018-01-01 12:35:13 +08:00
.header.txt 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
.travis.yml Bump Go versions and use 1.n.x to get latest minor versions 2018-10-28 00:05:43 +02:00
Dockerfile 🐳 docker build 2018-03-13 12:57:02 +08:00
LICENSE 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
README.md 📝 README 使用中文 2018-10-07 09:55:34 +08:00
TERMS.md 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
coverage.sh 💚 CI 2018-03-13 12:18:17 +08:00
gulpfile.js ⬆️ upgrade gulp 2018-10-05 23:11:52 +08:00
main.go 🔒 Update external URL using SSL 2018-03-12 12:28:33 +08:00
package-lock.json ⬆️ upgrade gulp 2018-10-05 23:11:52 +08:00
package.json ⬆️ upgrade gulp 2018-10-05 23:11:52 +08:00
pkg.sh package tool 2015-09-19 21:40:32 +08:00
yarn.lock :sparklers: upgrade gulp cc 2017-04-24 00:11:51 +08:00

README.md

Wide Build Status Go Report Card Coverage Status Apache License API Documentation Download

先试试我们搭建好的在线服务,你可以在这里下载并在本地环境运行,然后邀请小伙伴们来玩吧!

简介

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 toolgo get/install/fmt 等
  • 项目导入/导出
  • UI/编辑器多主题
  • 支持交叉编译
  • 调试:基于 gdb 的调试系统TBD
  • Git 整合:常用 git 命令可视化操作TBD
  • Shell连接到服务器执行命令TBD

界面

主界面

Overview

跳转到文件

Goto File

自动完成

Autocomplete

主题

Theme

查看表达式

Show Expression Info

构建报错提示

Build Error Info

Git 克隆

Git Clone

交叉编译

Cross-Compilation

Playground

Playground

架构

构建与运行

Build & Run

  • 一个浏览器 tab 对应一个 Wide 会话
  • 通过 WebSocket 进行程序执行输出推送
  1. 客户端浏览器发送 Build 请求
  2. 服务器使用 os/exec 执行 go build 命令
    2.1. 生成可执行文件
  3. 客户端浏览器发送 Run 请求
  4. 服务器使用 os/exec 执行文件
    4.1. 生成进程
    4.2. 运行结果输出到 WebSocket 通道
  5. 客户端浏览器监听 ws.onmessage 到消息后做展现

代码辅助

  • 自动完成
  • 查找使用
  1. 浏览器客户端发送代码辅助请求
  2. Handler 根据请求对应的 HTTP 会话获取用户工作空间
  3. 执行 gocode/ide_stub(gotools) 命令
    3.1 设置环境变量(${GOPATH} 为用户工作空间路径)
    3.2 gocode 命令需要设置参数 lib-path

文档

社区

授权

Wide 使用 Apache License, Version 2 作为开源协议,请务必遵循该开源协议相关约定。

鸣谢