A Node.js egy 2 éves dinamikusan fejlődő, és hatalmas fejlesztői közösséget megmozgató szerver oldali JavaScript környezet. Segítségével weboldalakat, konzolos segédalkalmazásokat, internetes szolgáltatásak építhetünk egy teljesen új eseményvezérelt és aszinkron I/O-t használó rendszerben, mely kevésbé érzékeny a nagy számú konkurens kérésre mint sok más szerver oldalon használt rendszer. Ezt a kezdeményezést szeretném bemutatni, szemléltetve az előnyöket és hátrányokat valamint a működést pár egyszerű példán keresztül.
A Ryan Dahl által 2009-ben kitalált új platform a Node.js napjaink egyik legfelkapottabb alkalmazás platformja. Ryan célja egy eseményvezérelt, aszonkron I/O környezet létrehozása volt. Mivel a JavaScript alkalmazások és programozók számára ez természetes közeg, ezért esett a választás a nyelvre.
A kezdetek óta a rendszer sokat változott és fejlődött, valamint egyre több operációs rendszeren érhető el natívan. Elsődleges platformot továbbra is a *nix rendszerek képezik, de már Windows alatt is elérhető a rendszer. A Node.js magja több C/C++ könyvtáron alapszik, amik az események kezelését, az aszinkron I/O műveleteket teszik lehetővé. Ezen réteg felett fut a Google V8 JavaScript motorja, aminek segítségével a JavaScript-ben írt alkalmazásunk kapcsolatba tud lépni e könyvtárakkal egy API-n keresztül.
Az, hogy szerver oldali alkalmazásainkat JavaScript-ben írjuk rengeteg hasznos tulajdonsággal bír. Többek között nem kell megtanulnuk egy új programozási nyelvet, alkalmazhatjuk az eddig a nyelvben szerzett ismereteinket, valamint a szerveren írt alkalmazási logikát könnyen átültethetjük a kliens oldalra.
A Node.js, mint szerver oldali JavaScript alkalmazás fejlesztő környezet több beépített modullal rendelkezik, amik a C/C++ könyvtárakkal tudnak interakcióba lépni. A modulok a CommonJS modul mintát követik (pár kisebb eltéréssel). Rengeteg fontos modullal rendelkezik, ezek többek között: HTTP, HTTPS, UDP, Net, DNS, TLS/SSL, URL, Query String, File System, Path, Events, Process, Child Processes, Buffers, Streams, Crypto. A listából látszik, hogy a Node.js igen alacsony szintű hozzáférést tesz lehetővé a szerver különböző rendszereihez, viszont magasabb szintű rendszereket önmagában nem kínál. Ehhez külső modulokat használhatunk, amik JavaScript és C++ komponensekből állhatnak (ahogy a beépített modulok is).
Példaképp álljon itt a klasszikus Hello World HTTP szerver Node.js változata example.js néven:
// Behívjuk a HTTP modult.
var http = require('http');
// Létrehozunk egy szervert, mely a 1337-es porton várakozik
http.createServer(function (keres, valasz) {
// Érkézett egy kérés, írjuk ki a HTTP fejléceket
valasz.writeHead(200, {'Content-Type': 'text/plain'});
// Adjuk meg a HTTP válasz törzsét.
valasz.end('Hello World\n');
}).listen(1337);
Az alkalmazásunkat a következőképpen futtathatjuk parancssorban:
$ node example.js
Ekkor a böngészőben a http://127.0.0.1:1337/
oldalra látogatva a klasszikus Hello World szöveg fog minket fogadni.
A Node.js egy friss, gyorsan fejlődő, radikálisan új szemléletű szerver oldali alkalmazásfejlesztői környezet, mely a JavaScript nyelvre épül. Rengeteg potenciális alkalmazási lehetősége van, például fejleszthetünk benne weboldalakat, chatszervereket, konzolos segédalkalmazásokat. A Node.js forráskódja, egyes platformokra bináris változata és dokumentációja elérhető a http://nodejs.org/ oldalon.
Galiba (Poetro) Péter 1998 óta foglalkozik weboldalak készítésével, és JavaScript-tel. 2006 óta saját céggel rendelkezik, és azóta a NowPublic.com, majd 2009 óta az Examiner.com front-end fejlesztője.
- Blog - http://poetro.hu
- Twitter - https://twitter.com/Poetro
- GitHub - https://github.com/Poetro
- Weblabor - http://weblabor.hu/tagok/1519