Skip to content

Instantly share code, notes, and snippets.

@Poetro
Created September 15, 2011 18:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Poetro/1219983 to your computer and use it in GitHub Desktop.
Save Poetro/1219983 to your computer and use it in GitHub Desktop.
A Node.js bemutatása

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.

Összefoglaló

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment