新聞中心
我最近開(kāi)始和Node.js打交道。以前做PHP開(kāi)發(fā),特別是Drupal,我發(fā)現(xiàn)向Node.js轉(zhuǎn)移很容易,而且過(guò)程很愉快!但是我也需要學(xué)會(huì)從一些不同的角度思考。下面我列出了5項(xiàng)我認(rèn)為PHP工程師應(yīng)該知道的Node.js特點(diǎn)。

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


咨詢
建站咨詢
