想要一个Golang的Cloud IDE吗?快来试试吧!

想要一个Golang的Cloud IDE吗?快来试试吧! 我正在寻找一款适用于Go语言的云端集成开发环境。我知道现在市面上有各种选择,这就像在鞭打死马(素食版说法:给吃饱的马喂食)一样多余。我认为Go语言需要,不,是理应拥有一个完全属于自己的开源网页版IDE,这个IDE应该用Go语言编写并专门为Go语言服务。目前我正在使用Atom编辑器搭配go-plus插件,效果很不错,但我希望它能基于云端运行。我用过的一些云端IDE包括Codiad和Eclipse Che,它们也很出色,但Codiad基于PHP开发,而Eclipse Che又有些过于庞大。还有其他选择吗?大家是否对再开发一个新的IDE感兴趣?我确实在认真考虑亲自着手这个项目。

1个赞


更多关于想要一个Golang的Cloud IDE吗?快来试试吧!的实战教程也可以访问 https://www.itying.com/category-94-b0.html

6 回复

我一直很惊讶似乎没有人知道LiteIDE

快来看看吧!自从我开始使用它,我就爱上了它!免费、简单且快速的真正集成开发环境!

// 代码示例保留区域

更多关于想要一个Golang的Cloud IDE吗?快来试试吧!的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是我之前没有考虑到的。虽然集成开发环境不会捕获任何信息,但浏览器方面确实值得警惕。不过人们可以也应该采取适当的预防措施来避免这种情况,我相信目前处理其他网络流量时也是这么做的。你的观点很有道理,对于开源项目我可能不在意,但对于私有项目,我肯定会避免使用任何标准浏览器。我的主要目标是实现跨平台和设备间的便携性与一致性。编程灵感可能随时涌现,我不希望被束缚在任何单一设备上。

另一个例子是 Gitpod,它几乎完美,我需要确认它是否具备类似 go-plus 的功能。它使用 Docker 镜像来管理开发环境(类似于 Eclipse Che)。它采用了一个名为 Theia IDE 的优秀编辑器,这个界面看起来和 VSCode 几乎一模一样。我唯一的问题是我也希望自己能够托管它……好吧,现在我只是在吹毛求疵了。

Gitpod

那使用带有远程开发和Go扩展的VSCode怎么样?

图片

Visual Studio Code 远程开发

Visual Studio Code 远程开发

图片

microsoft/vscode-go

一个为VS Code提供Go语言支持的扩展。- microsoft/vscode-go

我最近开始使用这个配置,目前很满意。

我曾使用并喜欢VSCode,必须尝试一下远程开发插件。在某些方面,VSCode似乎比Atom更精致,但Atom的go-plus插件非常出色。我不确定VSCode是否有类似go-plus插件的功能。我真正想要的是介于Eclipse CheCodiad之间的工具。我的目标是能够随时随地使用任何浏览器和任何设备进行编码……无需在本地设备上安装任何东西。Eclipse Che是我真正想要使用的工具,但它有点笨重,据我所知没有类似go-plus的插件。

基于你的需求,我建议考虑使用现有的开源Go语言云端IDE项目,或者基于现有工具构建自定义解决方案。以下是一些具体方案和代码示例:

1. 使用Theia IDE框架(基于Go语言后端) Theia是一个用TypeScript编写的云端IDE框架,但可以集成Go语言后端服务。以下是使用Go编写简单语言服务器的示例:

// main.go - 简单的LSP服务器示例
package main

import (
	"encoding/json"
	"log"
	"net"
)

type Message struct {
	JSONRPC string `json:"jsonrpc"`
	Method  string `json:"method"`
	Params  interface{} `json:"params"`
}

func startLanguageServer() {
	ln, err := net.Listen("tcp", ":4389")
	if err != nil {
		log.Fatal(err)
	}
	defer ln.Close()
	
	for {
		conn, err := ln.Accept()
		if err != nil {
			log.Print(err)
			continue
		}
		go handleConnection(conn)
	}
}

func handleConnection(conn net.Conn) {
	defer conn.Close()
	decoder := json.NewDecoder(conn)
	
	for {
		var msg Message
		if err := decoder.Decode(&msg); err != nil {
			return
		}
		
		// 处理Go语言特定的LSP请求
		if msg.Method == "textDocument/completion" {
			response := map[string]interface{}{
				"jsonrpc": "2.0",
				"id":      1,
				"result": []map[string]string{
					{"label": "fmt.Println", "kind": "function"},
					{"label": "go func", "kind": "snippet"},
				},
			}
			json.NewEncoder(conn).Encode(response)
		}
	}
}

func main() {
	startLanguageServer()
}

2. 基于Code-Server部署 使用code-server在云端运行VS Code,配置Go插件:

# 安装code-server
curl -fsSL https://code-server.dev/install.sh | sh

# 启动服务
code-server --auth none --port 8080

# 安装Go扩展
code-server --install-extension golang.Go

3. 集成Go Playground API 构建自定义界面集成Go官方Playground:

// playground_integration.go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

type PlaygroundRequest struct {
	Body string `json:"body"`
}

type PlaygroundResponse struct {
	Events []struct {
		Message string `json:"message"`
		Kind    string `json:"kind"`
	} `json:"events"`
}

func compileGoCode(code string) (string, error) {
	reqBody := PlaygroundRequest{Body: code}
	jsonData, _ := json.Marshal(reqBody)
	
	resp, err := http.Post("https://play.golang.org/compile", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()
	
	body, _ := ioutil.ReadAll(resp.Body)
	var result PlaygroundResponse
	json.Unmarshal(body, &result)
	
	if len(result.Events) > 0 {
		return result.Events[0].Message, nil
	}
	return "No output", nil
}

4. 现有Go语言云端IDE选项

  • Gitpod: 基于VS Code,对Go支持完善
  • GitHub Codespaces: 微软官方方案
  • Replit: 支持Go语言的在线编程环境

如果你决定开发新的IDE,建议基于现有的语言服务器协议(LSP)实现,这样可以复用大部分Go语言工具链。Go官方提供的gopls可以作为核心组件集成到任何支持LSP的编辑器中。

回到顶部