當前位置:
首頁 > 科技 > 拒絕 Python、C#和Go,我只用 Node.js!

拒絕 Python、C#和Go,我只用 Node.js!

Node.js 實在是太強大了,遠遠不止運行網站那麼簡單。

我要寫很多腳本。很多很多腳本。許多時候只是因為許多任務太複雜,或者量太大,以致沒法手工完成。所以任何需要花時間的任務我都會寫腳本。腳本不僅能減少錯誤,還能提高效率。我常說的一句話就是:

如果一件事情要做兩次,那就寫個腳本吧。

一些常見的任務有:

從巨大的數組中找出匹配的字元串,或者某個值。

刪掉所有滿足某些條件的一些值。

比較 x 和 y 然後輸出 z。

我知道大多數程序員都認為 Python,甚至 C# 和 Go 更適合這些任務,但我一直都選擇 Node.js 的理由有三個。

不會阻塞 I/O

默認情況下,Node.js 可以讀取文件、解析內容放入資料庫,再將新內容寫入文件,這一切幾乎都不需要思考。雖然 Python 和其他類似的語言可以通過庫函數實現非同步的能力,但默認情況下 Python 不是非同步的,必須等一個函數執行完成後才能執行下一個函數。

Node.js 就沒有這個問題,因為它的設計目標就是處理 Web 上連續不斷的請求,而且它的設計是一切皆在後台處理(如文件訪問、郵件等等)。

這個特點非常適合我的任務——我經常需要從我的研究對象中提取信息,然後保存到資料庫中供以後使用。這樣做還可以持久保存數據,同時釋放內存,因為內存中不需要保留整個數組也可以調用資料庫中的信息,操作、修改數據,所有這一切都在後台執行,所以可以在資料庫中存儲更多的信息。

I/O 請求也可以放在單獨的線程中執行,與 Node.js 的主線程獨立。也就是說,讀取特別大或者讀取困難的文件不會影響到主程序的性能(除了不能立即獲取文件內容)。

自給自足

在編寫只需使用幾次的臨時腳本時,代碼優化並不重要。重要的是把代碼寫出來並運行。而負責運行 Node.js 的 V8 引擎(C++)正好能派上用場。

如果你只能將數組放到內存中操作,那麼當數組非常非常大時,你會擔心機器的狀態和使用的內存量。幸運的是,V8 能通過自動垃圾回收來處理這一切。

也就是說,一塊信息不再使用之後(比如從數組中刪除掉的信息),其內存會自動被清除,然後在下次垃圾回收時被釋放。儘管垃圾回收的檢查和回收過程很複雜,但至少我可以專註於編寫我的代碼,而不用擔心內存管理等,可以放心地把這一切交給 V8 來處理。

互動式結果怎麼辦?

一方面 Node.js 的目標之一就是運行網站。而另一方面我需要顯示腳本結果或者將其發給別人,比如讓別人也能查看運行結果甚至能夠修改腳本的運行參數,所以我可以利用 Node.js 的真正的目標來實現這一需求。

Node.js 可以通過模板語言很容易地將結果直接放到伺服器上。我使用的模板引擎是 EJS,因為它跟腳本一樣非常直觀。這是典型的「只做一件事並且做好一件事」的例子。

我知道其他腳本語言也能運行網站,而且也非常容易(比如 Python),但能在同一個腳本中編寫邏輯代碼並提供結果,而無需離開 Node.js 的生態系統,還是很有誘惑的。

以上就是我幹什麼都是用 Node.js 的理由。不論是構建網站,訪問資料庫還是編寫腳本來自動處理文件,我都會默認選擇 Node.js。在此也推薦你也試試用 Node.js 寫個腳本。

原文:https://medium.com/@kieranmaher13/why-i-use-nodejs-for-basically-everything-i-do-e0a627787ecc

作者:Kieran Maher

譯者:彎月,責編:屠敏


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

從 Eclipse到IDEA,就像從金字塔到太空堡壘!
微軟曾經的二號人物永遠地離開了

TAG:CSDN |