44

GitHub - b3log/wide: ? 一款基于 Web 的 Go 语言 IDE。https://hacpai.com/tag/wide

 4 years ago
source link: https://github.com/b3log/wide
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

Wide

一款基于 Web 的 Go 语言 IDE

68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f62336c6f672f776964652e7376673f7374796c653d666c61742d737175617265 68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f62336c6f672f776964653f7374796c653d666c61742d737175617265 68747470733a2f2f696d672e736869656c64732e696f2f636f766572616c6c732f6769746875622f62336c6f672f776964652e7376673f7374796c653d666c61742d73717561726526636f6c6f723d434339393333 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c616e6775616765732f636f64652d73697a652f62336c6f672f776964652e7376673f7374796c653d666c61742d737175617265 68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d617061636865322d6f72616e67652e7376673f7374796c653d666c61742d737175617265
68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f62336c6f672f776964652e7376673f7374796c653d666c61742d737175617265 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652d646174652f62336c6f672f776964652e7376673f7374796c653d666c61742d73717561726526636f6c6f723d393943434646 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f62336c6f672f776964652e7376673f7374796c653d666c61742d737175617265 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f62336c6f672f776964652e7376673f7374796c653d666c61742d73717561726526636f6c6f723d464639393030 68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722d636c6f7365642f62336c6f672f776964652e7376673f7374796c653d666c61742d73717561726526636f6c6f723d464639393636 68747470733a2f2f686974732e62336c6f672e6f72672f62336c6f672f776964652e737667

68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f77617463686572732f62336c6f672f776964652e7376673f6c6162656c3d5761746368657273267374796c653d736f6369616c   68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f62336c6f672f776964652e7376673f6c6162656c3d5374617273267374796c653d736f6369616c   68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f726b732f62336c6f672f776964652e7376673f6c6162656c3d466f726b73267374796c653d736f6369616c   68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f6c6c6f776572732f38383235302e7376673f6c6162656c3d466f6c6c6f77657273267374796c653d736f6369616c

简介

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/编辑器多主题
  • 支持交叉编译

界面

主界面

Overview

跳转到文件

Goto File

自动完成

Autocomplete

主题

Theme

查看表达式

Show Expression Info

构建报错提示

Build Error Info

交叉编译

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 作为开源协议,请务必遵循该开源协议相关约定。

鸣谢


开源项目推荐

  • 如果你需要搭建一个个人博客系统,可以考虑使用 Solo
  • 如果你需要搭建一个多用户博客平台,可以考虑使用 Pipe
  • 如果你需要搭建一个社区平台,可以考虑使用 Sym
  • 欢迎加入我们的小众开源社区,详情请看这里

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK