利用Node.js創(chuàng)建Web應(yīng)用程序前須了解這七項(xiàng)
譯文隨著Node.js人氣的持續(xù)提升,大家很可能終有一天會(huì)利用它來(lái)開(kāi)發(fā)自己的下一款Web應(yīng)用程序。目前已經(jīng)有相當(dāng)一部分程序員開(kāi)始利用它來(lái)創(chuàng)建實(shí)時(shí)Web API,這是因?yàn)镹ode.js無(wú)疑是我們能夠找到的***秀的、可用于創(chuàng)建服務(wù)器端應(yīng)用的運(yùn)行時(shí)系統(tǒng)。這是一款具備高度可定制能力的服務(wù)器引擎,大家可以根據(jù)自己的實(shí)際需求對(duì)其進(jìn)行設(shè)置,從而使其更好地為各位服務(wù)。而如果我們需要的是一套易用性出眾的系統(tǒng),Node.js同樣能夠滿(mǎn)足需求,而且它會(huì)改變我們構(gòu)建網(wǎng)絡(luò)或者其它事件驅(qū)動(dòng)型應(yīng)用程序的具體方式。在今天的文章中,我們將一同了解關(guān)于Node.js的幾大關(guān)鍵性事實(shí)。
1) Node.js的速度表現(xiàn)非常驚人
Node.js使用的是一套V8引擎,其能夠以極快速度完成JavaScript的編譯與執(zhí)行。而這主要是由于V8能夠?qū)avaScript作為原生機(jī)器碼處理。
另外值得一提的就是Node.js的事件循環(huán);其屬于單線程,且以異步方式執(zhí)行所有操作。它能夠異步執(zhí)行全部I/O操作,確保大家不會(huì)遭遇任何延遲狀況。
在使用Node.js的時(shí)候,大家會(huì)享受到面向網(wǎng)絡(luò)連接、文件系統(tǒng)以及數(shù)據(jù)庫(kù)的快速讀取與寫(xiě)入效果。這些在應(yīng)用程序構(gòu)建工作當(dāng)中顯然都非常重要。
總而言之,在使用Node.js的過(guò)程中,大家會(huì)驕傲地發(fā)現(xiàn)自己將擁有速度極快且可擴(kuò)展能力良好的Web應(yīng)用程序,而且其能夠并行處理大量連接并仍然保持理想的輸出速度。
2) Node.js代碼包共享極為便利
在Node.js社區(qū)當(dāng)中,庫(kù)代碼包的共享可謂極為便利。這些代碼包在文化、法律、規(guī)程乃至技術(shù)層面皆允許我們進(jìn)行共享。Node.js還配備一套Node Package Manager,其中包含有大量現(xiàn)成的代碼包選項(xiàng)。這就使得我們很可能從他人已經(jīng)開(kāi)發(fā)完成的成果中發(fā)現(xiàn)自己需要的部分。
大家可以創(chuàng)建屬于自己的Node.js代碼包,而后將其輕松共享給其他用戶(hù)。要?jiǎng)?chuàng)建這樣一個(gè)代碼包,大家可以使用以下代碼:
- hello
- | index.js
- | package.json
一旦創(chuàng)建完成,大家即可利用以下代碼在其它應(yīng)用當(dāng)中使用該代碼包。
- hello-world
- | app.js
現(xiàn)在我們可以將該代碼包定位至其文件夾當(dāng)中并加以運(yùn)行。一旦其投入運(yùn)行,我們即可根據(jù)需要隨意加以使用。
3) Node.js擁有出色的實(shí)時(shí)能力
.實(shí)時(shí)能力在Node.js的實(shí)時(shí)能力即強(qiáng)大又易于實(shí)現(xiàn)。它能夠在大量并發(fā)連接當(dāng)中良好起效,因此其在即時(shí)游戲、通訊以及其它多種常見(jiàn)的多用戶(hù)實(shí)時(shí)應(yīng)用當(dāng)中擁有出色的表現(xiàn)。
Node.js當(dāng)中的多用戶(hù)要求由其事件循環(huán)進(jìn)行處理,而其實(shí)時(shí)能力則可通過(guò)WebSocket協(xié)議的使用得以實(shí)現(xiàn);這基本上相當(dāng)于利用Node.js在服務(wù)器與客戶(hù)端之間建立起一條雙向通信通道。有了這條通信通道,客戶(hù)端就能夠輕松將數(shù)據(jù)發(fā)送至服務(wù)器,而服務(wù)器亦可以同樣的方式將數(shù)據(jù)發(fā)送至客戶(hù)端。
目前***人氣的WebSocket協(xié)議之一正是Socket.io。以下代碼演示了服務(wù)器如何使用該協(xié)議:
- var app = require(‘http’).createServer(handler)
- var io = require(‘socket.io’)(app);
- app.listen(8080);
- io.on(‘connection’, function (socket) {
// 向客戶(hù)端發(fā)送一條消息
- socket.emit(‘event to client’, { hello: ‘world’ });
// 處理一條來(lái)自客戶(hù)端的消息
- socket.on(‘event from client, function (data) {
- console.log(data);
- });
- });
4) Node.js提供事件驅(qū)動(dòng)型編程機(jī)制
事件機(jī)制可謂貫穿Node.js整體,這也就解釋了為什么它的速度表現(xiàn)能夠超越任何其它類(lèi)似的現(xiàn)有技術(shù)方案。一旦大家啟動(dòng)了Node.js服務(wù)器,它就會(huì)初始化自身變量,而后進(jìn)行函數(shù)聲明并等待事件發(fā)生。
在這樣一款應(yīng)用程序當(dāng)中存在著主循環(huán),其作用在于監(jiān)聽(tīng)事件從而在某一事件或者全部事件被觸發(fā)之時(shí)觸發(fā)回調(diào)函數(shù)。
以下代碼示例說(shuō)明了整個(gè)流程的具體實(shí)現(xiàn)方式:
//導(dǎo)入事件模塊
- var events = require(‘events’);
//創(chuàng)建一個(gè)eventEmitter對(duì)象
- var eventEmitter = new events.EventEmitter();
5) Node.js擁有足以支持生產(chǎn)活動(dòng)的充足配套工具
在使用Node.js時(shí),大家能夠獲得一切自己在構(gòu)建應(yīng)用程序并利用其實(shí)現(xiàn)***生產(chǎn)效率與性能表現(xiàn)的必要工具。Node.js的工具組合非常齊全,足以幫助大家在無(wú)需額外找尋工具方案的前提下創(chuàng)建切實(shí)有效的應(yīng)用成果。
這是一項(xiàng)堅(jiān)實(shí)的技術(shù)方案,具備應(yīng)當(dāng)具備的一切,這意味著大家能夠直接著手創(chuàng)建應(yīng)用程序并加以運(yùn)行,而無(wú)需在其它準(zhǔn)備工作上浪費(fèi)任何時(shí)間。
6) Node.js允許我們使用一套代碼庫(kù)完成開(kāi)發(fā)
在使用Node.js時(shí),大家可以在應(yīng)用開(kāi)發(fā)過(guò)程當(dāng)中在服務(wù)器與客戶(hù)端內(nèi)使用同一套代碼庫(kù)。這也使得二者之間的數(shù)據(jù)同步成為可能。而在這類(lèi)應(yīng)用當(dāng)中,我推薦大家使用Meteor框架與之相配合。
Meteor是一款出色的框架方案,其允許應(yīng)用用戶(hù)在服務(wù)器與用戶(hù)端運(yùn)行同樣的代碼內(nèi)容。如果大家編寫(xiě)的是客戶(hù)端代碼,其會(huì)自動(dòng)將其保存至數(shù)據(jù)庫(kù),而這部分?jǐn)?shù)據(jù)將會(huì)自動(dòng)反映在服務(wù)器當(dāng)中。在此之后,對(duì)于數(shù)據(jù)內(nèi)容的任何變更都會(huì)同時(shí)被發(fā)送至客戶(hù)端以及服務(wù)器處。以下代碼就明確解釋了這一過(guò)程:
//在瀏覽器內(nèi)直接點(diǎn)擊“submit”后即可保存“name”的值
- ‘.click .submit’: function(e, tpl) {
- Users.update(
- { _id: this._id },
- { $set: { name: $(‘.name’).val() }}
- );
- }
7)發(fā)展前景一片光明
相當(dāng)一部分開(kāi)源項(xiàng)目是由技術(shù)志愿者們負(fù)責(zé)維護(hù)的。在這種情況下,否認(rèn)其目前運(yùn)作態(tài)勢(shì)有多么良好,其未來(lái)發(fā)展前景都得不到有效的保障。但Node.js的情況則完全不同。盡管同樣屬于徹頭徹尾的開(kāi)源技術(shù),但其背后擁有著企業(yè)管理者以及贊助商的支持,這種立足于真正企業(yè)的項(xiàng)目無(wú)疑在發(fā)展前景方面更令人放心。
另外,該項(xiàng)目還受到其它多家大型企業(yè)的支持,具體包括雅虎、微軟、PayPal以及其它多家廠商。這意味著它將長(zhǎng)久存在并且值得我們信任并依賴(lài)。
通過(guò)以上七項(xiàng)事實(shí),相信大家已經(jīng)了解到了Node.js的驚人魅力。Web開(kāi)發(fā)人員將在探索過(guò)程中發(fā)現(xiàn)遠(yuǎn)遠(yuǎn)超過(guò)需求與預(yù)期的巨大寶藏,并借此打造出一款出色的應(yīng)用程序。Node.js能夠幫助我們自由發(fā)揮自己的想象力與創(chuàng)造力,而它的易用性也讓它成為最為理想的Web開(kāi)發(fā)選項(xiàng)。
原文標(biāo)題:7 Things To Know About Node.js Before Building Your Web Application