跳到主要內容

go-like ​

go-like 是一套給 TypeScript 後端使用的 Go 風格微服務工具套件。它把生命週期、Context、服務呼叫、服務探索、訊息、設定、儲存、健康檢查與可觀測性拆成清楚的小套件,不會要求團隊把現有框架或 runtime 全部換掉。

可攜式程式碼只依賴標準 Web API,像是 Request、Response、Headers、AbortSignal、Web Streams 與外部傳入的 fetch。Node.js、Bun 專屬能力會放在獨立入口。已經匯出 Fetch 的框架不需要 go-like adapter 套件:Hono、Elysia 與 H3 2.x 的 app.fetch 可以直接交給 @go-like/web;H3 1.x 使用 toWebHandler(app)。Croner、BullMQ、NATS、Pino、Winston 等資源才使用生命週期適配器。

第一次閱讀建議從開始使用開始,再按診所預約:從 0 到 1依里程碑走過引導專案。已經有現成服務要導入時,可以看遷移與導入;想知道 go-like 和其他工具各自負責什麼,請看工具比較。

想知道每個套件與 provider 到底負責什麼,就看套件與 provider 參考和套件參考;想確認哪些能力真的跑過測試,而不是「照理說應該可以」,請看驗證。

選一條閱讀路線 ​

這裡所說的 Go 風格 ​

會阻塞的工作把 Context 放在第一個參數、資源由誰持有要講清楚、停止後要有穩定終態,小介面則透過結構型別實作。這不代表硬搬 Go 的命名或 channel;TypeScript 仍使用自然的 export,第三方套件特有語意也保留在原生物件上。

@go-like/protoc-gen-like 基於 Protobuf-ES 產生 Context-first Protobuf RPC 程式碼。@go-like/transport-grpc-buf 的 Fetch 入口支援 Connect/gRPC-Web unary 與 server-streaming;/native 提供標準 gRPC 的四種呼叫形態,包含 client-streaming 與 bidi。這是獨立於內部 Fetch/SSE 路徑。

Node 26.12.1 與 Bun 1.4.4 的託管 gRPC 已通過慢速消費者 drain 回歸測試;Connect 2.1.2 與 Bun 1.4.2 Fetch 的歷史取消與停機限制仍未驗證已修復。

Last updated: