sabato 22 marzo 2014

Primi passi con NodeJs

NodeJs è una piattaforma creata da google per la realizzazione di applicazioni web scalabili. Prima di avventurarsi nel codice bisogna farsi una bella ripassata di javascript e dei concetti fondamentali per la realizzazione di una web app.
Per come istallare nodejs, npm vi rimando al sito http://nodejs.org.

In questo articolo realizzeremo una web app con nodejs, in particolare un sito con la pagina iniziale e delle funzionalità dinamiche.

Per prima cosa creiamo un file index.html con il seguente codice:
<html>
    <head>
        <title>MyFirstPage</title>
        <script src='http://code.jquery.com/jquery-1.11.0.min.js'></script>
    </head>
    <body>
        <div>
            <h1>TITLE</h1>
        </div>
        <div>
            <h3>ARTICLE</h3>
            <button id='clickMe'>click me</button>
        </div>
        <script>
            $('[id=clickMe]').click(function(){
                $.ajax("./doSomething", {
                    data: {
                        req: "a",
                        dataGym:"a"
                    },
                    type: "GET"
                }).done(function(msg) {
                    alert(msg);
                    //userJSON = JSON.parse(msg);
                    //alert(userJSON.result);
                  
                });
            });
        </script>
    </body>
</html>


Le banali righe di codice precedenti rappresentano la nostra pagina iniziale. Quello che ci interessa maggiormente è il codice jquery legato alla pressione del tasto click me. In pratica genera una chiamata ajax di tipo GET passando al server dei dati, in questo esempio sono irrilevanti.

Scritta la nostra pagina iniziale, passiamo alla realizzazione del server. Oltre la creazione del server vedremo un altro concetto fondamentale di nodejs, ovvero i moduli. Un modulo è un file .js in cui inseriremo funzioni di supporto al nostro server.

Chiameremo il modulo utils.js con le seguenti righe di codice:

exports.about = function(){
    console.log('Questo modulo è importantissimo!!!');
}

exports.urlRequestManage = function(relPath){
    var tmp = relPath.split('?');
    return tmp[0];
}


la funzione about lancia un semplice messaggio, mentre la seconda funzione ci serve per dividere i componenti di una richiesta get. Ovviamente si potrebbero fare cose molto più belle e complicate ma questo non è lo scopo dell'articolo.

Ci resta da creare il file sever.js:



Il metodo createServer prende una funzione che verrà richiamata ogni volta che un client si collegherà al nostro server. In patrica si vede il tipo di richiesta e di conseguenza si risponde  una volta con la pagina iniziale, mentre in caso della richiesta doSomething con un messaggio che il client manderà a schermo.

a questo punto lanciamo il server:

nodejs server.js

var http = require('http');
var utils = require('./utils.js');
var fs = require('fs');

http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/html'});
  
    var file = req.url.substr(1);
    if( file === 'index.html' ){
        fs.exists('./'+file, function(exists){
            if(exists){
                fs.readFile('./'+file, 'utf8', function(err,data){
                    /*console.log(data);*/
                    res.end(data);
                });
            }else{
                console.log('file not exists');   
            }
        });
    }else if( utils.urlRequestManage(file) === 'doSomething' ){
            res.end('vaiiiii');
    }
    console.log(utils.urlRequestManage(file));
}).listen(1337, '127.0.0.1'); 


e ci colleghiamo tramite il browser.

Spero che l'articolo vi abbia confuso ancora di più le idee,
alla prossima.