Introducció a Node.js

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

Què és i per a què serveix Node.js

Node és un intèrpret Javascript del cantó del servidor que canvia la noció de com hauria de treballar un servidor. El seu objectiu és permetre a un programador construir aplicacions altamente escalables i escriure codi que pugui gestionar desenes de milers de connexions simultànies en una sola màquina física.

Instal.lació de Node.js

Per a la instal.lació seguim:

Descarreguem el codi font. Ara bé, ens fixarem de descarregar la última versió disponible que obtenim de:

En aquest cas descarreguem la versió 0.12.18 (abril 2017):

$ wget http://nodejs.org/dist/v0.12.18/node-v0.12.18-linux-x64.tar.gz 
$ tar xvzf node-v0.12.18-linux-x64.tar.gz 
$ cd node-v0.12.18-linux-x64/bin
$ ./node

Si la instal.lació ha anat bé ja puc fer la primera prova: Hola món!:

$ ./node
> console.log('Hello World');
Hello World

O bé si edito el fitxer hello_world.js:

console.log('Hello World');
Hello World

El podré invocar fent:

$ ./node hello_world.js
Hello World

hello world http server

Crearem un petit servidor web que escolti peticions http pel port 8080. Script hello_http.js:

var http = require('http');

var server = http.createServer(function(req, res) {
  res.writeHead(200);
  res.end('Hello Http');
});
server.listen(8080);

Arrenquem el servidor:

$ node hello_http.js

I en un navegador web ens comuniquem amb el servidor:

O bé podem comunicar-nos amb el servidor web a través de la línia de comandes, utilitzant la utilitat curl:

$ curl localhost:8080
Hello Http

Instal.lació del NPM: Node Package Manager

La primera prova que vull fer és fer una connexió a una base de dades mysql. Per fer-ho utiltizaré la comanda:

var mysql = require('mysql');

però prèviament s'haurà d'instal.lar el módul mysql, i això es fa amb el Node Package Manager, que prèviament s'ha d'instal.lar. Amb Linux/Ubuntu és tan fàcil com fer:

$ sudo apt-get install npm

Per assegurar-nos de què el tenim ben instal.lat:

$ npm help

Usage: npm <command>

where <command> is one of:
    add-user, adduser, apihelp, author, bin, bugs, c, cache,
    completion, config, ddp, dedupe, deprecate, docs, edit,
    explore, faq, find, find-dupes
...

Accedir a mysql

Ara que ja tenim instal.lat el npm podem instal.lar el mòdul de mysql:

$ npm install mysql
/home/joan/node-v0.12.18-linux-x64/bin
└─┬ mysql@2.13.0 
  ├── bignumber.js@3.1.2 
  ├─┬ readable-stream@1.1.14 
  │ ├── core-util-is@1.0.2 
  │ ├── inherits@2.0.3 
  │ ├── isarray@0.0.1 
  │ └── string_decoder@0.10.31 
  └── sqlstring@2.2.0 

npm WARN enoent ENOENT: no such file or directory, open '/home/joan/node-v0.12.18-linux-x64/bin/package.json'
npm WARN bin No description
npm WARN bin No repository field.
npm WARN bin No README data
npm WARN bin No license field.

Per fer una connexió a mysql seguim:

Hauràs de tenir a mà una base de dades de mysql, una taula a la que vols accedir. Per exemple, es pot accedir a la base de dades langtrainer hostatjada en la màquina 192.168.0.15:

$ mysql -h 192.168.0.15 -u alumne -pkeiL2lai langtrainer

Script acces_langtrainer.js:

var http = require('http');
var mysql = require('mysql');

// Create a connection to MySql Server and Database
var connection = mysql.createConnection({
  host : 'localhost',
  port : 3306,
  database: 'langtrainer',
  user : 'alumne',
  password : 'keiL2lai'
});

// Create a simple Web Server to respond to requests
http.createServer(function(req, res){
    // RECEIVED A REQUEST!
    // for this example respond with a HTTP 200 OK
    res.writeHeader(200);
    res.write('Connect to mySql\n');

      // Query the database to some data 
    connection.query("SELECT * from langtrainer.word", function(err, rows){

        // There was a error or not?
        if(err != null) {
            res.end("Query error:" + err);
        } else {
            // Shows the result on console window
            //console.log(rows[0]);
				for (var i = 0; i < rows.length; i++) {
				  console.log(rows[i].word);
					res.write(rows[i].word + '\n');
				};
		    	//res.write(rows[1]);
		    	res.write('\n');
            res.end("Success!");
        }

    });

// The server will be listen on port 8080 
}).listen(8080);

Executem el script:

$ node acces_langtrainer.js

i des d'un navegador web accedim a la url:

Connect to mySql

deserve (to)
weird
gills
draw breath (to)
draw (to)
snout
wound
dismiss (to)
shame
hump
lump
spit

Success!

I per la consola també obtenim la llista de les paraules del vocabulari.

Tutorials


creat per Joan Quintana Compte, desembre 2013

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines