首頁 後端開發 Golang 我用 Golang 重寫了我的 JS 項目,想分享我的經驗。

我用 Golang 重寫了我的 JS 項目,想分享我的經驗。

Aug 22, 2024 am 11:16 AM

I’ve rewritten my JS project in Golang and want to share my experience.

兩年前,我用 NodeJS 為自己建立了一個小型伺服器 - 一個基於 HTTP 的 SQLite 代理程式。當您需要透過網路與消費者共享資料集時,它非常有用。經過多次重構和新的需求,現在我終於決定用 Golang 重寫代理,以獲得更好的分佈和記憶體效率。進展非常順利,我幾乎用Go 重寫了所有內容,甚至包括我最初不打算重寫的部分,現在我相信,如果我將Go 與NodeJS 一起使用,我之前所做的50-70% 可能會更好。因此,我已經向自己證明,Golang 對於任何後端密集型 Web 開發來說都是非常高效的,並且在開發速度方面幾乎與 NodeJS 相當。與 C++ 相比,即使使用 Go 創建 NAPI 插件也非常容易,因為交叉編譯。

現在我們來談談 Golang 的一個缺點,這與程式設計無關。
去年我主要以自由開發人員身分工作。參加演出,有時還參加短期合約工作。我偶爾使用 Golang,主要是當我的任務與區塊鏈相關時,我甚至用 Go 編寫了幾個微服務。

現在我調查了就業市場,我有點失望,加密/金融領域是Golang 在就業市場上的主要領域:(。大多數公司需要3-4 年的Go 經驗(即使是零工),這很難如果您不在FANG 或加密貨幣金融領域工作
。 當我查看我的工作提要時,就業市場上的 Golang 看起來就像區塊鏈的 Ro​​R,有點「用領域語言來找」。

如果小公司和新創公司也青睞 Go,他們可以做得更好,就業市場也會有所不同。我相信Go可以為產品增加更多的價值。是的 - 一個寵物項目給了我這個視角。

談寵物項目。
我介紹 DAL:https://github.com/nesterow/dal

它處於早期 alpha 階段,因為目前只有我在使用它。在當前階段,該專案對於研究很有用,特別是對於那些想要為 NodeJS 編寫本機插件或想要將其庫移植到 Golang 的人,或者如果有人有時間來烤我:)

客戶端部分是用 TypeScript 編寫的,伺服器可以用作獨立的二進位檔案(最佳效能)或 Nodejs 外掛程式。

平安✌️

以上是我用 Golang 重寫了我的 JS 項目,想分享我的經驗。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

PHP教程
1532
276
進行音頻/視頻處理 進行音頻/視頻處理 Jul 20, 2025 am 04:14 AM

音視頻處理的核心在於理解基本流程與優化方法。 1.其基本流程包括採集、編碼、傳輸、解碼和播放,每個環節均有技術難點;2.常見問題如音畫不同步、卡頓延遲、聲音噪音、畫面模糊等,可通過同步調整、編碼優化、降噪模塊、參數調節等方式解決;3.推薦使用FFmpeg、OpenCV、WebRTC、GStreamer等工具實現功能;4.性能管理方面應注重硬件加速、合理設置分辨率幀率、控制並發及內存洩漏問題。掌握這些關鍵點有助於提升開發效率和用戶體驗。

在GO中開發Kubernetes運營商 在GO中開發Kubernetes運營商 Jul 25, 2025 am 02:38 AM

編寫KubernetesOperator的最有效方式是使用Go語言結合Kubebuilder和controller-runtime。 1.理解Operator模式:通過CRD定義自定義資源,編寫控制器監聽資源變化並執行調和循環以維護期望狀態。 2.使用Kubebuilder初始化項目並創建API,自動生成CRD、控制器和配置文件。 3.在api/v1/myapp_types.go中定義CRD的Spec和Status結構體,運行makemanifests生成CRDYAML。 4.在控制器的Reconcil

堆棧與堆分配和指針在GO中 堆棧與堆分配和指針在GO中 Jul 23, 2025 am 04:14 AM

棧分配適用於生命週期明確的小型局部變量,自動管理、速度快但限制多;堆分配用於生命週期長或不確定的數據,靈活但有性能代價。 Go編譯器通過逃逸分析自動決定變量分配位置,若變量可能逃逸出當前函數作用域則分配至堆上。常見導致逃逸的情況包括:返回局部變量指針、賦值給接口類型、傳入goroutine。可通過-gcflags="-m"查看逃逸分析結果。使用指針時應關注變量生命週期,避免不必要的逃逸。

進行科學計算和數值分析 進行科學計算和數值分析 Jul 23, 2025 am 01:53 AM

Go語言可用於科學計算與數值分析,但需了解其優劣。優勢在於並發支持和性能,適合併行算法如分佈式求解、蒙特卡洛模擬等;社區庫如gonum和mat64提供基礎數值計算功能;可通過cgo或接口調用C/C 、Python實現混合編程提昇實用性。局限在於生態不如Python成熟,可視化和高級工具較弱,部分庫文檔不完善。建議結合Go特性選擇合適場景並參考源碼示例深入使用。

以身作則http中間件記錄示例 以身作則http中間件記錄示例 Aug 03, 2025 am 11:35 AM

Go中的HTTP日誌中間件可記錄請求方法、路徑、客戶端IP和耗時,1.使用http.HandlerFunc包裝處理器,2.在調用next.ServeHTTP前後記錄開始時間和結束時間,3.通過r.RemoteAddr和X-Forwarded-For頭獲取真實客戶端IP,4.利用log.Printf輸出請求日誌,5.將中間件應用於ServeMux實現全局日誌記錄,完整示例代碼已驗證可運行,適用於中小型項目起步,擴展建議包括捕獲狀態碼、支持JSON日誌和請求ID追踪。

去圖像操縱庫 去圖像操縱庫 Jul 21, 2025 am 12:23 AM

常見的Go圖像處理庫有標準庫的image包和第三方庫,如imaging、bimg、imagick。 1.image包適合基礎操作;2.imaging功能全、API簡潔,適合大多數需求;3.bimg基於libvips,性能強,適合大圖或高並發;4.imagick綁定ImageMagick,功能強大但依賴重。快速實現圖片縮放和裁剪可用imaging庫,通過Resize和CropAnchor函數幾行代碼即可完成,支持多種參數配置。加濾鏡或調整色調可通過imaging提供的色彩變換函數實現,如Graysc

如何從恐慌中恢復過來? 如何從恐慌中恢復過來? Jul 23, 2025 am 04:11 AM

Panic在Go中如同程序“心髒病發作”,recover可作為“急救工具”防止崩潰,但recover僅在defer函數中生效。 1.recover用於避免服務掛掉、記錄日誌、返回友好錯誤。 2.必須配合defer使用,僅對同goroutine生效,恢復後程序不回到panic點。 3.建議在頂層或關鍵入口使用,不濫用,優先使用error處理。 4.常見模式是封裝safeRun函數包裹可能panic的邏輯。掌握其使用場景與限制,才能正確發揮其作用。

以身例子從stdin中讀取 以身例子從stdin中讀取 Jul 27, 2025 am 04:15 AM

使用fmt.Scanf可讀取格式化輸入,適合簡單結構化數據,但字符串遇空格截止;2.推薦使用bufio.Scanner逐行讀取,支持多行輸入、EOF檢測和管道輸入,並可處理掃描錯誤;3.使用io.ReadAll(os.Stdin)一次性讀取全部輸入,適用於處理大塊數據或文件流;4.實時按鍵響應需第三方庫如golang.org/x/term,常規場景使用bufio已足夠;實際建議:交互式簡單輸入用fmt.Scan,行輸入或管道用bufio.Scanner,大塊數據用io.ReadAll,且始終處理

See all articles