Wprowadzenie do Node.js

Logo Node JS

Wpis ten będzie dotyczyć platformy pozwalającej uruchomić kod JavaScript na serwerze: Node.js

Jest ona zbudowana na silniku JS V8 – tym samym, który jest używany między innymi w przeglądarce Google Chrome, dzięki czemu nasz kod JavaScript możemy uruchamiać poza przeglądarką. Dodatkowo dzięki modułom node.js jak i API mamy więcej możliwości niż w zwykłym JavaScript  – możemy np. tworzyć aplikacje łączące się z bazą danych. Dzięki node.js jesteśmy w stanie tworzyć serwery WWW napisane w języku JavaScript.

Do instalacji rozszerzeń dla node.js niezbędny jest NPM: https://www.npmjs.com/

Używanie node.js

Aby zacząć korzystać z node.js musimy oczywiście go zainstalować: http://nodejs.org/download/

Po zainstalowaniu możemy zacząć go używać. Przykładowy prosty program, który możemy uruchomić bezpośrednio z wiersza poleceń node:

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

Oczywiście możemy też wywoływać pliki js bezpośrednio z wiersza poleceń. Najpierw zapiszmy powyższy kod w pliku test.js a następnie go wywołajmy:

$node test.js
// -> Hello world!

Jak zapewne wiecie funkcja console.log to podstawowa metoda wyświetlania użytkownikowi komunikatów w konsoli JavaScript.

Serwer w node.js

Przykładowy prosty serwer w node.js:

// 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 powyższy plik:

$ node server.js

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

Po dokonaniu jakichkolwiek zmian w kodzie, aby je zobaczyć należy ponownie uruchomić serwer.

Aby zakończyć pracę obecnego skryptu, używamy w konsoli kombinacji Ctrl + C. Następnie ponownie uruchamiamy dany plik.

Przetwarzanie danych od użytkownika – request i response

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

// create server and process data
var server = http.createServer(function (req, res) {
  var requestData = '';
  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>');
    });
  }
});

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

Podsumowanie

Node.js jest platformą dającą naprawdę wiele możliwości. Zachęcam do zapoznania się z jej cechami w dokumentacji API node.js: http://nodejs.org/api/synopsis.html
Ten wpis to tylko bardzo krótkie wprowadzenie do wielu możliwości node.js