關(guān)于Node.js:PHP開發(fā)人員應(yīng)了解的5點
我最近開始和Node.js打交道。以前做PHP開發(fā),特別是Drupal,我發(fā)現(xiàn)向Node.js轉(zhuǎn)移很容易,而且過程很愉快!但是我也需要學(xué)會從一些不同的角度思考。下面我列出了5項我認(rèn)為PHP工程師應(yīng)該知道的Node.js特點。
1. Node.js 是構(gòu)建于Chrome的JavaScript引擎的
Google的瀏覽器Chrome,有一個非??焖俚腏avaScript引擎,叫做V8。這個JS引擎可以被獨立出來。Node.js就是建立在V8之上的。這也是為什么Node.js會運行的如此之快。對于開發(fā)者來說,有幾個好處:
◆ 你不需要重新學(xué)習(xí)一門新的語言,它就是JS。我常常查看Chrome和Mozilla的JS文檔,他們完全通用。
◆ 受益于V8的 JIT (Just In Time)編譯功能,Node.js 的應(yīng)用的運行速度可以和本地代碼媲美。對比測試標(biāo)明,Node.js 要比 PHP 和Ruby 快很多。
◆ 隨著V8的進(jìn)步,Node.js 將同時受益。
2. Node.js 不僅僅是一個網(wǎng)頁服務(wù)器或者平臺
和PHP不同,Node.js 不是以網(wǎng)頁為中心的。Node.js 是通用目的的JS運行時,帶有很多功能強(qiáng)大的庫。其中有一個庫提供了 HTTP/HTTPS 的實現(xiàn)。
你可以用Node.js做很多事情。你可以很容易的利用它來創(chuàng)建一個命令行程序或者其他TCP/IP服務(wù)。
3. Node.js 是面向?qū)ο蟮?(雖然比較奇怪)
我喜歡jQuery。但是它讓我變懶,寫了很多簡單、快速但是很難看毫無架構(gòu)可言的腳本。這并不是什么壞事,因為處理簡單的網(wǎng)頁行為,這足夠了。但是Node.js不是僅僅用來處理瀏覽器上面的事情的,它是可以用來構(gòu)建應(yīng)用程序的,也就是你必須考慮程序架構(gòu)。當(dāng)你用Node.js寫代碼的時候,你將深入到JS的對象模型中。我曾經(jīng)很討厭JS的對象模型,常常把我搞瘋掉。但是Node.js和NPM(Node Package Manager)很好的利用了JS的原型系統(tǒng),幫助我清楚了很多類/接口使用中的障礙,讓我愛上了面向?qū)ο蟮腏S編程。
4. 基于事件的 I/O
這是Node.js最有爭議的一點。Node自身在一個線程中運行。是的,只有一個!你可以和傳統(tǒng)的 Apache/PHP 的一堆實例對比一下。但是Node運行的很快速,很高效。
這是怎么做到的?共享執(zhí)行時間,把密集的IP處理放到別的線程處理。對于這一點的優(yōu)點與缺點我可以寫很長的文字來討論,但這里我想說點實際的:當(dāng)你用Node.js寫代碼的時候,你需要考慮你的任務(wù)是否是慢的,或者I/O密集型的。使用異步的方法來處理回調(diào)或者使用事件處理器來處理執(zhí)行慢的工作。
最主要的是,你要保證代碼不讓一個請求占據(jù)Node主線程太長事件,并且不給其他請求處理的機(jī)會。
5. 必須使用包管理!
老實說,你喜歡PEAR嗎?你是不是把你大部分的代碼都轉(zhuǎn)換成PEAR或者PECL包了?并沒有很多PHP程序員這么做,甚至很多人并不知道PEAR的存在。在Node.js的世界里,你必須把代碼打包:
◆ Node.js的設(shè)計就是一個最精簡的框架。PHP核心的90%的東西都不會在Node.js核心中出現(xiàn)。例如,數(shù)據(jù)庫驅(qū)動、郵件發(fā)送庫、HTML支持等等,都不在核心庫中。
◆ Node.js的核心就是一個模塊化的框架。你會發(fā)現(xiàn)它很好用!
◆ NPM(Node Package Manager)是你必備的工具。有了它,你就可以下載Node.js的各種代碼包,驅(qū)動,解析器,編輯器,服務(wù)器等等。
◆ 創(chuàng)建并且發(fā)布你的代碼包是很簡單的。我在使用Node工作不久就發(fā)布了我的***個代碼包。
如果你是一個Drupal開發(fā)者,你會覺得Node的包管理系統(tǒng)有點像Drupal的模塊,不同的是你現(xiàn)在面對的開發(fā)者,不是建站者。
結(jié)論:問問你的醫(yī)生,Node.js是否合適你
我提到了很多PHP開發(fā)者應(yīng)該知道的,Node.js的特點?;ヂ?lián)網(wǎng)上有成千上萬關(guān)于Node.js的文章,大部分是正面的。Node是一個有趣的產(chǎn)品,它有一個優(yōu)雅的架構(gòu)。但是Node并不是***藥。我并不認(rèn)為Node能夠馬上替代PHP。我只是認(rèn)為PHP開發(fā)者都應(yīng)該學(xué)習(xí)一下Node.js。它很簡單,很有用。
原文:http://www.oschina.net/news/25413/about-nodejs
【編輯推薦】