想要一个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
更多关于想要一个Golang的Cloud IDE吗?快来试试吧!的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是我之前没有考虑到的。虽然集成开发环境不会捕获任何信息,但浏览器方面确实值得警惕。不过人们可以也应该采取适当的预防措施来避免这种情况,我相信目前处理其他网络流量时也是这么做的。你的观点很有道理,对于开源项目我可能不在意,但对于私有项目,我肯定会避免使用任何标准浏览器。我的主要目标是实现跨平台和设备间的便携性与一致性。编程灵感可能随时涌现,我不希望被束缚在任何单一设备上。
另一个例子是 Gitpod,它几乎完美,我需要确认它是否具备类似 go-plus 的功能。它使用 Docker 镜像来管理开发环境(类似于 Eclipse Che)。它采用了一个名为 Theia IDE 的优秀编辑器,这个界面看起来和 VSCode 几乎一模一样。我唯一的问题是我也希望自己能够托管它……好吧,现在我只是在吹毛求疵了。

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

Visual Studio Code 远程开发
一个为VS Code提供Go语言支持的扩展。- microsoft/vscode-go
我最近开始使用这个配置,目前很满意。
我曾使用并喜欢VSCode,必须尝试一下远程开发插件。在某些方面,VSCode似乎比Atom更精致,但Atom的go-plus插件非常出色。我不确定VSCode是否有类似go-plus插件的功能。我真正想要的是介于Eclipse Che和Codiad之间的工具。我的目标是能够随时随地使用任何浏览器和任何设备进行编码……无需在本地设备上安装任何东西。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的编辑器中。

