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