吐槽一下我所了解的Node.js
首先是性能,用起來感覺 Node.js 的性能并沒有想象中那么好。內存占用差不多和 Ruby 一個等級,比 Python, PHP 要多。計算性能(即 CPU 使用)上,純計算并沒有太大優(yōu)勢,但因為可以很好地控制異步流程,所以總體表現上來看性能要比 PHP 好很多。個人覺得 Node.js 在性能方面是有很大的潛力的,因為有很多大的項目在致力于提高 JavaScript 虛擬機的性能——比如各大瀏覽器;同時 JavaScript 是一個語法簡單的語言,也是一個開放標準,不像 Python 和 PHP 一樣因為顧及兼容性,很難進行大的重構來改善性能。
然后是包管理器和庫,Node.js 內置了 npm, 因為 npm 是個非常好用的包管理器,因為 JavaScript 的編寫門檻低,因為 JavaScript 本來就有很多優(yōu)秀的前端庫被移植到了后端,所以 NPM 上的包現在已經多于 PyPI 和 RubyGems 了,然后遠超 PEAR 和 Composer. Node.js 的開發(fā)中不同于 PHP 的一點就是大家都不怕加依賴,每個小需求都去 NPM 上找已有的庫來實現——而且往往都能找到。所以 Node.js 的開發(fā)基本上就是在組合依賴,然后傾向于把一個即使很小的獨立需求寫成一個庫,這倒是和 UNIX 的思路比較像。再另一方面,Node.js 社區(qū)對開源十分友好,這里的友好是指大多數的庫都是在 Github 上開放開發(fā)的,而且使用的是非常寬松的協議,例如 MIT, 不像 GPL 那么具有「攻擊性」。
社區(qū),Node.js 的應用大部分還是 Web 后端,而 Web 后端相關的庫基本都是那么幾個大牛搞起來的,例如 express, jshttp, jade, mocha 和 koa 就是以 TJ 大神為首的四五個人開發(fā)起來的,這倒是個有趣的現象。——雖然 TJ 大神最后決定淡出 Node.js 社區(qū)。
工具鏈,Node.js 比較年輕,很多好用的工具都是近兩年剛剛出現的,例如預編譯方言, 單元測試和模擬測試,構建工具等;不敢說有多好,但是要比 PHP 好非常多。至于原因,首先很大程度是因為這些庫都是既可用于前端又可用于后端的,因為 Web 前端的硬需求,讓 Node.js 順便得益;然后就是因為 JavaScript 靈活而簡單的語法,讓這些工具可以以一些非常巧妙而優(yōu)雅的方式來實現。至于 IDE, 依然得益于 Web 前端,還是有一些 IDE 可用的——雖然 JavaScript 語言本身不是很利于靜態(tài)分析。
語法,我還要再強調一下 JavaScript 的語法簡單而靈活,其中重要的一點是 JSON, JSON 幾乎是目前 Web 領域最通用的數據格式,而在 JavaScript 對 JSON 具有原生的支持!JavaScript 中所有的數據結構都是圍繞著 JSON 的一個超集——Object 展開的,包括數組,函數,對象和類。當然這樣也帶來一個麻煩,就是因為寫起來限制少,導致不知道該怎么寫,剛開始學習的時候總免不了反復重構,才能摸清各種設計模式在不同情況下的優(yōu)劣,找到適合自己和適合具體項目的寫法,所以可以說 Node.js 入門簡單,但要構建大型項目,還是比較考驗開發(fā)者的功力的。因為歷史遺留問題,JavaScript 的語法算不上優(yōu)美,不過還好我們有各種預編譯方言,比如 Coffee Script, TypeScript, Dart, LiveScript 以及 ClojureScript, 總有一款適合你。
使用場景,JavaScript 是一個通用的編程語言,Web 前后端自然不必說,來看看其他方面。個人以為 Node.js 還是很適合用來編寫服務器工具的,或稱運維工具,因為運維中很多情況是可以異步工作的,JavaScript 又有比較不錯的正則支持,替代 bash 和 Python 也問題不大;Node.js 只需裝好解釋器,就可以隨便用,不用畏手畏腳地避免引入依賴。而桌面和移動設備編程,Node.js 有 node-webkit 以及其他各種外殼,雖然目前使用體驗不是很好,但是可以非常顯著地降低開發(fā)成本,輕松跨平臺,想必前途也是光明的。
最后說學習 Node.js, 在我看來,學習 Node.js 分兩點,一是要理清 Node.js 的「基于事件回調的異步 IO」,這是 Node.js 與其他主流編程語言最不同的一點。然后第二步就是把 NPM 上 Top 100 的庫都看一下,不用細看,只要混個臉熟,知道每個庫是干嘛的就行了。完成這兩步,那么恭喜你,已經是一個 Node.js 開發(fā)者了。
- windows系統下簡單nodejs安裝及環(huán)境配置
- 利用NodeJS和PhantomJS抓取網站頁面信息以及網站截圖
- 跟我學Nodejs(一)--- Node.js簡介及安裝開發(fā)環(huán)境
- nodejs文件操作模塊FS(File System)常用函數簡明總結
- Nodejs sublime text 3安裝與配置
- 我的NodeJs學習小結(一)
- 一行命令搞定node.js 版本升級
- 2014年最火的Node.JS后端框架推薦
- node.js開發(fā)中使用Node Supervisor實現監(jiān)測文件修改并自動重啟應用
- 為什么Node.js會這么火呢?Node.js流行的原因
相關文章
通過node-mysql搭建Windows+Node.js+MySQL環(huán)境的教程
這篇文章主要介紹了通過node-mysql搭建Windows+Node.js+MySQL環(huán)境的教程,node-mysql是JavaScript編寫的一個Node的MySQL驅動,需要的朋友可以參考下2016-03-03