Node.js wprowadzenie

node-js

Poziom podstawowy

Popularność języka JavaScript jest oczywista. A przyczyniają się do tego m.in. takie zastosowania jak node.js. Od dłuższego czasu widać i słychać dookoła o tej technologii.

Sami pracujemy od jakiegoś czasu z node i robimy naprawdę fajne rzeczy, więc z pewnością jest to coś godnego uwagi! I w końcu mam trochę czasu, aby o tym napisać. Jako osoba głęboko wierząca, że JavaScript ma świetlaną przyszłość w programowaniu i swoje stabilne miejsce, myślę że node.js można uznać za *mandatory* skill.

node.js – wprowadzenie

Node.js jest platformą, która pozwala uruchomić kod JavaScript. Zbudowana jest na tym samym silniku JS, który używany jest choćby w Google Chrome – V8.

I co w tym fajnego? Otóż owy kod JavaScript możemy uruchamiać poza przeglądarką, a dzięki API i modułom node.js mamy masę możliwości typowych dla server-side, jak interakcja z systemem plików, komunikacja z bazami danych czy socket.io.

Node to po prostu środowisko do uruchamiania JS nie będące przeglądarką! Do tego rozszerzenia i mamy potężny zestaw narzędzi.

Do instalacji rozszerzeń używamy NPM:

https://www.npmjs.com/

Node.js jest środowiskiem programistycznym zaprojektowanym do tworzenia wysoce skalowalnych aplikacji internetowych, szczególnie serwerów WWW napisanych w języku JavaScript. Node.js umożliwia tworzenie aplikacji sterowanych zdarzeniami wykorzystujących asynchroniczny system I/O. Oczywiście jest to projekt open source.

Dość gadania – przejdźmy do programowania.

Wydawnictwo Strefa Kursów

Jak używać node.js

Pracę z node.js możemy rozpocząć w mgnieniu oka. Potrzebujemy narządzi npm oraz node – zainstalowanych i dostępnych z poziomu wiersza poleceń.

W tym celu po prostu pobieramy i instalujemy wersję node dla naszego systemu:

http://nodejs.org/download/

Mając zainstalowane node.js, możemy uruchomić kod testowy.

Najprostszy przykład – uruchamiamy node w wierszy poleceń i piszemy:

console.log("Hello node!");
// -> Hello node!

Lepszym pomysłem będzie zapisanie kodu w pliku, np. test1.js. Możemy następnie wywołać:

$node test1.js
// -> Hello node!

Można także uruchomić skrypt w trybie debug:

$ node debug test.js

Funkcja console.log to podstawowa metoda wyświetlania użytkownikowi komunikatów.

Podobnie jak używamy np. funkcji alert po stronie klienta. Sam alert możemy wysłać z naszego serwera napisanego w node jako odpowiedź, na przykład:

var str = "<html>...<script> tutaj alert </script>...</html>";
res.end(str);

Metodą res.end odpowiadamy na żądanie. Napiszmy najprostszy serwer, aby zobaczyć node.js w akcji.

Serwer w node.js

To właściwie najbardziej podstawowa rzecz.

Przykład – prosty serwer w node.js:

// my_server.js
var http = require('http');
http.createServer(function handler(req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end('Hello World\n <h1>Node.js!</h1>');
}).listen(1337, '127.0.0.1');

console.log('Server running at http://127.0.0.1:1337/');

Uruchamiamy:

$ node my_server.js

Teraz możemy otworzyć URL na danym porcie i zobaczyć treść wysłaną przez nasz serwer:

http://127.0.0.1:1337

Uwaga:

po dokonaniu zmian w kodzie, trzeba uruchomić serwer ponownie, aby je zastosować.

Aby zakończyć pracę skryptu, używamy w konsoli kombinacji Ctrl + C.

Request i response – przetwarzanie danych od użytkownika

Kolejny przykład to prosty, lecz kompletny kod prezentujący przetwarzanie danych z formularza i wysyłanie odpowiedzi do użytkownika.

Pobieranie danych, które przesłał nam użytkownik umożliwia zdarzenie ‚data’, które uruchamia się gdy przychodzi stream danych z żądaniem HTTP.

Przykład:


// add necessary modules 
var http = require('http');
var qs = require('querystring');

// build a simple form
var pageHTML = '<html>' +
  '<head>' +
    '<title>Add something</title>' +
    '<meta charset="utf-8">' +
  '</head>' + 
  '<body>' +
    '<form method="post" action="">' +
      '<div>' +
        '<label for="nickname">Nickname:</label>' +
        '<input type="text" name="nickname">' +  
      '</div>' +
      '<div>' +
        '<input type="submit" value="send it">' +
      '</div>' +
    '</form>' +
  '</body>' +
'</html>';

// create server and process data
var server = http.createServer(function (req, res) {
  var requestData = '';

  // check HTTP method and show the right content
  if (req.method === "GET") {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(pageHTML); // serve our HTML code
  } else if (req.method === "POST") {
    req.setEncoding('utf-8');

    req.on('data', function(data) {
      requestData += data;
    });

    req.on('end', function() {
      var postData = qs.parse(requestData);
      res.writeHead(200, {'Content-Type': 'text/html'});
      res.end('<h1>Your nick: '+ postData.nickname + '</h1>');
    });
  }
});

server.listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

Serwer który stworzyliśmy sprawdza jakiego typu jest żądanie. Jeśli GET – serwuje przygotowany kod HTML strony z formularzem.

Jeśli POST – przetwarza przesłane dane:

...
    req.on('data', function(data) {
      requestData += data;
    });
...

Następnie w zdarzeniu ‚end’ wysyła odpowiedź do użytkownika. Jest to zdarzenie zachodzące gdy kończy się stream danych i możemy odesłać odpowiedź.

Do poszczególnych danych odwołujemy się w prosty sposób, np.:

postData.nickname

Oczywiście to bardzo proste podejście – HTML w zmiennej. Ale bez obaw – w node.js możemy korzystać z szablonów i wielu innych udogodnień.


Instalacja modułów node.js

Duże możliwości node.js zawdzięczamy modułom. Ich instalacja jest bardzo prosta. W konsoli piszemy:

$ npm install nazwa_modulu

Na przykład:

$ npm install mysql

Node również ma frameworki ułatwiające tworzenie aplikacji. Bardzo popularnym jest Express.js:

$ npm install express

Komunikacja na socketach:

$ npm install socket.io

O socketach i socket.io i możliwościach jakie przed nami otwierają jeszcze napiszemy.

Więcej o node.js

Głównym punktem do którego warto się odnieść jest dokumentacja API node.js:

http://nodejs.org/api/synopsis.html

Książka o node.js

Godna polecenia jest książka Node.js w akcji wyd. Helion:

Node.js w akcji

Node.js w akcji

Podsumowanie

Tym kończymy szybkie wprowadzenie do wspaniałej technologii node.js. Ludzie potrafią robić cuda łącząc w projektach node z innymi technologiami, jak PHP, Raspberry PI, czy technologie mobilne.

W kolejnych artykułach o node.js zajmiemy się m.in. komunikacją z bazą danych MySQL, Mongo DB czy też socketami.

Programista WWW i aplikacji mobilnych z wieloletnim doświadczeniem, początkujący bloger. Pasjonat programowania, nowych technologii, e-commerce, a także sportu i motoryzacji.

Twitter LinkedIn Google+ Skype Xing 

Podaj dalej: Share on Facebook2Tweet about this on TwitterShare on Google+1Share on LinkedIn0Share on Tumblr0Digg thisEmail this to someonePin on Pinterest1
Możesz skomentować leave a response, lub podać trackback z własnej strony.