應該在業余項目使用 Node.js
有一種東西,把軟件行業的人們聯系在了一起:我們喜歡創造能夠運行的東西。完成一個功能、或剛好符合預期的項目,是最讓人滿意的。對于我的業余項目(side projects),我熱愛學習新框架、技術和語言。但是到了***,最有收獲和欣慰的地方,是完成了項目并對外發布了某些東西。老實講,如果你有全職工作,擔心鍛煉身體、雜事和可能還要睡覺,那么,常常難以找到完成業余項目的時間,當我談到這個問題時,你會理解的。借助提前規劃,或許利用一些不錯的項目管理工具,我們就可以幫助自己。但是我們的技術棧怎么樣?如果完成并發布項目是我們的目標,那么挑選一種能夠較好適應快速開發的技術棧就顯得十分重要了。
Node.js 已經成為流行的服務器端平臺,用作很多現代 web 應用程序的 web 服務器。在開發 Node.js 應用程序時,你將使用 JavaScript 編寫所有東西,還能夠在任何一種類型的服務器(Windows、Mac 或 Linux)上運行你的應用程序。Node.js 由大量的限定范圍的模塊(module) 和 包(package) 組成,你可以將它們利用起來。盡管如此,你***取你所需,確保你的應用程序盡可能地輕量級。在一天結束時,你應該享受業余項目,Node.js 應用程序寫起來比較有樂趣。
1.Node.js 究竟是什么?
Node.js 本身只是一種運行時環境,適合使用 JavaScript 來編寫服務器端應用程序。Node.js 不是 JavaScript 框架,但是大部分 Node.js 應用程序使用了框架。Express.js 是***的 Node.js 框架,有著出色的文檔和海量的優秀資源。因此對于 Node.js web 應用程序棧而言,你應安裝 Node.js 和 Express.js 來運行你的 web 服務器,這將成為一個快速、輕量級的中間人,它能夠在你的客戶端和數據庫之間迅速地傳遞請求和響應。
2.你不應該使用 Node.js 的場景
在我們深入 Node.js 開發的精彩部分之前,讓我們首先說清楚你不應該使用 Node.js 的情況。
如果你要開發的應用程序涉及到 CPU 密集型的操作,你就不應該使用 Node.js。Node.js 是單線程的,在服務器上運行要耗費太長時間,會拖垮應用程序的性能。對于服務器上任何種類的大數據集,你的應用程序都不應該處理它們。要么把這部分工作轉移到數據庫,要么粗暴地切換到更適合的平臺上。
如果你不喜歡 JavaScript 開發,你就不應該使用 Node.js。你應該享受業余項目,不要因為網上有人告訴你這樣做,就把不愉快的東西強加給自己。但是在你放棄之前,聽我把話說完,我遇到過很多人,他們漠視著 JavaScript,甚至沒有給 JavaScript 一個公平的機會。剛開始時,JavaScript 貌似狂野、難以駕馭,不過當你學會了如何正確地使用,你就能看到它的力量有多大了。JavaScript 是應用最廣泛的編程語言之一,隨著 ECMAScript 6 的發布,它將變得更好。
3.JavaScript ——前端和后端
讓我們深入了解一下,Node.js ***化你的業余項目生產力的方式。JavaScript 已經接管了互聯網,不再單純用于瑣碎功能。對于很多現代 web 應用程序,運行在客戶端的核心功能是由 JavaScript 提供的。除了改善用戶體驗,它還從 web 服務器分擔了大量工作。還記得之前我們討論的輕量級的服務器嗎?讓客戶端的瀏覽器承擔自己的工作,這樣我們就能夠充分利用 Node.js 的***力量——減輕快捷的 I/O。
應用程序邏輯在前后端之間傳播;對于我們這些 Node.js 開發人員,我們能夠幸運地在前后端使用完全相同的編程語言。大部分開發人員對于上下文切換的成本,已經有了更多的認識。不得不把你的思維重新聚焦和調整在新任務、新語言、以及新問題上,常常會讓開發人員耗費一些寶貴的有效率的時間。減少上下文之間切換的距離,使我們在各種任務的處理上游刃有余,相應的恢復時間也更加迅速。
4.JSON——數據叢林之王
對于服務器端和客戶端之間的數據傳輸,JSON(JavaScript Object Notation)【注1】已經成為事實上的數據格式。根據我在其它平臺上開發 web 應用程序的經歷,把你的數據轉換成各種格式和模型,所花費的時間是相當驚人的。對于 Node.js 應用程序,JSON 可以用在應用程序的所有三個領域——客戶端、服務器端和數據庫。MongoDB 和 CouchDB 是流行的 NoSQL 數據庫,使用 JSON 存儲數據。PostgreSQL,一個流行的開源關系型數據庫系統,也支持存儲 JSON 對象。微軟甚至宣布 SQL Server 2016 將支持 JSON。有如此豐富的可選項,就可輕松地給你的 Node.js 應用程序挑選一種可靠數據庫,以擠出每一點生產力,而不必擔心數據格式的轉換。
5.模塊——取你所需
業余項目的一個經驗法則就是保持小而專注。該法則有助于確保真正地完成你的項目。同樣的概念可在 Node.js 項目中找到——你只使用那些真正需要的模塊。這使得你的應用程序足夠輕量級。和其它那些以企業為中心的平臺不同,你不會有大量根本用不到的額外東東。你的開發和部署將更迅速,你的項目將占用更少空間,項目里的每樣東西恰恰都是你需要的,你明白這些,內心感到平靜。NPM(Node Package Manager)【注2】是 Node.js 應用程序的一大賣點。它讓你簡單快捷地訪問所有公共 Node 模塊,選擇范圍超過了 150,000 個包。減少開發時間、利用已有開源軟件和工具,從未如此簡單過。
6.總結
Node.js 給我們提供了一個了不起的應用程序平臺,因其高 I/O 需求而真正勝出的 web 應用程序。如果你打算在下一個業余項目使用 Node.js,就盡量開發一個輕量的 web 服務器 API,以最小化服務器端的真正負載。Node.js 極易理解,開發人員學習和掌握起來,相對容易些,為什么不嘗試一下呢?
7.我的下一步規劃
我想包含一些優秀資源的簡單清單,幫助我掌握 Node.js。
https://thinkster.io/mean-stack-tutorial/ :它是對我幫助***的教程。該教程結構精妙,覆蓋了極有價值的海量內容。該教程免費,但是你還能付費,以訪問到源代碼和視頻(當時我為源代碼支付了 25 美元,不過他們好像變成了每月 20 美元的訂閱,就可看到他們的所有教程)。
http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js :一篇寫得不錯的文章,幫助我理解了 Node.js 的優點和缺點。
注1:JSON(JavaScript Object Notation)是一種由道格拉斯·克羅克福特構想設計、輕量級的數據交換語言,以文字為基礎,且易于讓人閱讀。盡管JSON是Javascript的一個子集,但JSON是獨立于語言的文本格式,并且采用了類似于C語言家族的一些習慣。https://zh.wikipedia.org/wiki/JSON
注2:Node包管理器(Node Package Manager)。它是一個javascript的軟件包管理系統,默認環境為Node.js,從Node.js0.6.3版本開始,npm被自動附帶在安裝包中。https://zh.wikipedia.org/wiki/Node%E5%8C%85%E7%AE%A1%E7%90%86%E5%99%A8