DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 吐槽一下我所了解的Node.js
吐槽一下我所了解的Node.js
編輯:關於JavaScript     

首先是性能,用起來感覺 Node.js 的性能並沒有想象中那麼好。內存占用差不多和 Ruby 一個等級,比 Python, PHP 要多。計算性能(即 CPU 使用)上,純計算並沒有太大優勢,但因為可以很好地控制異步流程,所以總體表現上來看性能要比 PHP 好很多。個人覺得 Node.js 在性能方面是有很大的潛力的,因為有很多大的項目在致力於提高 JavaScript 虛擬機的性能——比如各大浏覽器;同時 JavaScript 是一個語法簡單的語言,也是一個開放標准,不像 Python 和 PHP 一樣因為顧及兼容性,很難進行大的重構來改善性能。

然後是包管理器和庫,Node.js 內置了 npm, 因為 npm 是個非常好用的包管理器,因為 JavaScript 的編寫門檻低,因為 JavaScript 本來就有很多優秀的前端庫被移植到了後端,所以 NPM 上的包現在已經多於 PyPI 和 RubyGems 了,然後遠超 PEAR 和 Composer. Node.js 的開發中不同於 PHP 的一點就是大家都不怕加依賴,每個小需求都去 NPM 上找已有的庫來實現——而且往往都能找到。所以 Node.js 的開發基本上就是在組合依賴,然後傾向於把一個即使很小的獨立需求寫成一個庫,這倒是和 UNIX 的思路比較像。再另一方面,Node.js 社區對開源十分友好,這裡的友好是指大多數的庫都是在 Github 上開放開發的,而且使用的是非常寬松的協議,例如 MIT, 不像 GPL 那麼具有「攻擊性」。

社區,Node.js 的應用大部分還是 Web 後端,而 Web 後端相關的庫基本都是那麼幾個大牛搞起來的,例如 express, jshttp, jade, mocha 和 koa 就是以 TJ 大神為首的四五個人開發起來的,這倒是個有趣的現象。——雖然 TJ 大神最後決定淡出 Node.js 社區。

工具鏈,Node.js 比較年輕,很多好用的工具都是近兩年剛剛出現的,例如預編譯方言, 單元測試和模擬測試,構建工具等;不敢說有多好,但是要比 PHP 好非常多。至於原因,首先很大程度是因為這些庫都是既可用於前端又可用於後端的,因為 Web 前端的硬需求,讓 Node.js 順便得益;然後就是因為 JavaScript 靈活而簡單的語法,讓這些工具可以以一些非常巧妙而優雅的方式來實現。至於 IDE, 依然得益於 Web 前端,還是有一些 IDE 可用的——雖然 JavaScript 語言本身不是很利於靜態分析。

語法,我還要再強調一下 JavaScript 的語法簡單而靈活,其中重要的一點是 JSON, JSON 幾乎是目前 Web 領域最通用的數據格式,而在 JavaScript 對 JSON 具有原生的支持!JavaScript 中所有的數據結構都是圍繞著 JSON 的一個超集——Object 展開的,包括數組,函數,對象和類。當然這樣也帶來一個麻煩,就是因為寫起來限制少,導致不知道該怎麼寫,剛開始學習的時候總免不了反復重構,才能摸清各種設計模式在不同情況下的優劣,找到適合自己和適合具體項目的寫法,所以可以說 Node.js 入門簡單,但要構建大型項目,還是比較考驗開發者的功力的。因為歷史遺留問題,JavaScript 的語法算不上優美,不過還好我們有各種預編譯方言,比如 Coffee Script, TypeScript, Dart, LiveScript 以及 ClojureScript, 總有一款適合你。

使用場景,JavaScript 是一個通用的編程語言,Web 前後端自然不必說,來看看其他方面。個人以為 Node.js 還是很適合用來編寫服務器工具的,或稱運維工具,因為運維中很多情況是可以異步工作的,JavaScript 又有比較不錯的正則支持,替代 bash 和 Python 也問題不大;Node.js 只需裝好解釋器,就可以隨便用,不用畏手畏腳地避免引入依賴。而桌面和移動設備編程,Node.js 有 node-webkit 以及其他各種外殼,雖然目前使用體驗不是很好,但是可以非常顯著地降低開發成本,輕松跨平台,想必前途也是光明的。

最後說學習 Node.js, 在我看來,學習 Node.js 分兩點,一是要理清 Node.js 的「基於事件回調的異步 IO」,這是 Node.js 與其他主流編程語言最不同的一點。然後第二步就是把 NPM 上 Top 100 的庫都看一下,不用細看,只要混個臉熟,知道每個庫是干嘛的就行了。完成這兩步,那麼恭喜你,已經是一個 Node.js 開發者了。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved