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