[Node.js]一.什么是Node.js,而又能做什么?-創(chuàng)新互聯(lián)

一.什么是Node.js,而又能做什么?

什么是Node.js

Q:Node.js?

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比遠安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式遠安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋遠安地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

A:這貨不是Javascript。但它的的確確是Javascript!

Q:一個新的Javascript框架?

A:不是框架,哦,如果不嚴格地說,好像也算是框架,但是在瀏覽器中它不并怎么受支持。

Q:那有個屁用?

A:那就錯了,它的作用會讓你和你的小伙伴驚呆的。

Q:哦?我不相信!

A:額,如果有人告訴你,這貨是做服務(wù)器端開發(fā)的,就像Java,PHP,.NET,GO,Python和Ruby等等做服務(wù)器端開發(fā)一樣,你會相信嗎?

Q:是嗎?你這是在侮辱我的智商!

A:別著急,首先要申明,當(dāng)初網(wǎng)景這個公司開發(fā)LiveScript的時候,本來就在同步制作服務(wù)端的開發(fā),只是因為那個時代已經(jīng)有很多有名的后臺語言誕生,從而放棄這個夢想,所以你現(xiàn)在只看到瀏覽器中的Javascript,而且它被人長久誤會為玩具。哦,對了,JavaScript和LiveScript是一個東西。

Q:好吧,這好像有點意思,那么它能做什么?

A:不要著急,這么偉大的一個創(chuàng)舉,你為什么不多體會一下呢,其實一直有人在做這樣的事情,只不過沒有被得到廣泛應(yīng)用,或者只是自己用來玩玩,而不像V8團隊這樣聰明。

Q:V8?

A:沒錯,V8,這是一個在丹麥的Google團隊,專門開發(fā)Javascript引擎,或許你已經(jīng)無時無刻的都在使用它,也許你用過Chrome瀏覽器,或者基于Chromium的瀏覽器,那么你可以體會到頁面的加載速度如此之快,這些一部分得利于V8引擎。

Q:那你的意思是,V8引擎可以將Javascript用于服務(wù)器功能開發(fā)?

A:正如你所說,谷歌開源了這個引擎,不僅僅開源這樣簡單,在Javascript的發(fā)展到路上具有劃時代的意義。在前端,jQuery的出現(xiàn)加速了頁面性能的優(yōu)化,提高了Javascript的腳本功能,從而使得更多的前端框架出現(xiàn),而現(xiàn)在Javascript的服務(wù)端功能得以東山再起,使得Javascript不在是單兵作戰(zhàn)。

又能做什么

Q:我已經(jīng)知道Javascript的服務(wù)端功能了,那么這個項目就叫做Node.js?

A:是的。

Q:那他能做什么呢?

A:服務(wù)端想要做到的事情基本都能做到。

Q:它由什么編寫而成的呢?

A:C++

Q:那么它對底層的支持如何?

A:嗯,這樣給你說吧,Node.js的實質(zhì)就是用Javascript的代碼規(guī)范通過C++進行了實現(xiàn)和封裝,現(xiàn)在Node.js正在快速發(fā)展,對底層的支持也在逐步擴展,其中很多原生的Node都是使用底層的方式進行運作的。

Q:那這么說,我是否可以開發(fā)HTTP或者HTTPS協(xié)議這樣的服務(wù)呢?

A:當(dāng)然可以,而且還非常簡單,甚至可以做TCPsocket開發(fā),當(dāng)然UDP一樣支持。

Q:如果這樣,我想我會考慮學(xué)習(xí)這個語言,可是,它有什么優(yōu)點和缺點,現(xiàn)在的服務(wù)端語言這么多,我為什么要使用它呢?

A:當(dāng)然,你沒有必要必須要使用它,或許他也不是一門必修的語言課程,但是他的魅力足以讓你學(xué)習(xí)。如果說優(yōu)點,那么就是它是單線程多核多進程的語言,并且在他眼里所有的都是事件,而缺點也是因為如此,它無法滿足實時密集型請求處理,而事件模型是很多人無法理解的。

Q:單線程?我的天,那效率怎么能提高呢?

A:不,其實多線程的語言處理是以消耗內(nèi)存為代價,對于CPU的使用率一直不是很好,V8團隊堅信,單線程已經(jīng)夠用了,使用非阻塞式IO和請求大大提高CPU的使用率,如果使CPU達到100%利用,那最好不過了,并且這對內(nèi)存的釋放也是有好處的。但也是因為如此對于密集方式請求,可能會出現(xiàn)阻塞,但好在當(dāng)前密集方式請求并不是很多。

Q:好吧,那么什么是事件模型,我不太明白。

A:事件模型,從概念上來說就是通過一些列事件的綁定和觸發(fā)進行交互的反饋,如果你使用過一些語言的監(jiān)聽器,或者理解什么是監(jiān)聽者模式,你會更好的理解這些,但是這里我不想太多講解這些,你可以簡單的理解為,所有的處理都像是在發(fā)命令,而對這個命令有興趣的人會有反應(yīng),從而做一些事情。

Q:哦,那如果這樣說,Node不是順序執(zhí)行了?

A:是的,這正是事件模型的核心,它不考慮順序,而是以實際的事件響應(yīng)順序為主,所以這也給一些想學(xué)習(xí)這個語言的人帶來了一些障礙,或許無法很好的理解這一點,但是我想應(yīng)該先去學(xué)習(xí)一下什么是監(jiān)聽者模式就夠了。

忽視了什么

Q:很好,我現(xiàn)在知道一些大概了,那我們是不是忽略了什么?

A:你說的很對,我們忽略了很多,但是猶如之前的對話,其中的缺點也就是我們所忽略的,Node不是萬能的,比如他無法實現(xiàn)客戶端界面的開發(fā),至少目前是這樣,對數(shù)據(jù)庫的鏈接有些官方?jīng)]有發(fā)行和開發(fā),你或許可以在社區(qū)中看到有類似mysql的處理庫,但這不意味者這是官方發(fā)行版本,所以很多人不愿意通過Node與數(shù)據(jù)庫進行鏈接,當(dāng)然現(xiàn)在Node對NoSQL類型數(shù)據(jù)庫鏈接支持的不錯。

Q:社區(qū)?那么這個社區(qū)活躍嗎?

A:非?;钴S,也正式因為如此,Node的發(fā)展速度非常驚人,比如你可以自己構(gòu)建一個LIB,通過npm進行發(fā)布的升級,就是這么簡單。

Q:那他在什么系統(tǒng)下開發(fā)?

A:除了傳統(tǒng)的linux和unix外,現(xiàn)在也支持windows,當(dāng)然windows下畢竟不是主流,我想你不也不會考慮在windows下進行開發(fā)。

Q:是的。不過能否給我一個簡單的例子,讓我體會一下呢?

A:沒有問題。

一個簡單的案例

var http = require('http');
var util = require('util');
var querystring = require('querystring');
http.createServer(function(request,response){
    var post = '';
    request.on('data',function(chunk){
        post += chunk;
        console.log(chunk);
    });
    request.on('end',function(){
        post = querystring.parse(post);
        response.end(util.inspect(post));
    });
}).listen(8080);

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞名稱:[Node.js]一.什么是Node.js,而又能做什么?-創(chuàng)新互聯(lián)
URL分享:http://muchs.cn/article46/coseeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、外貿(mào)建站、企業(yè)建站、電子商務(wù)用戶體驗、手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名