Diferència entre revisions de la pàgina «Introducció a Node.js»

De wikijoan
Salta a la navegació Salta a la cerca
 
 
(Hi ha 8 revisions intermèdies del mateix usuari que no es mostren)
Línia 4: Línia 4:
 
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.
 
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=
+
=Descàrrega i instal.lació de Node.js=
Per a la instal.lació seguim:
+
*https://nodejs.org/es/download/
*http://nodeguide.com/beginner.html#hello-world-tutorial
 
  
Descarreguem el codi font. Ara bé, ens fixarem de descarregar la última versió disponible que obtenim de:
+
'''NodeJS''' inclous '''npm''', el gestor de paquets de node. Hauríem de tenir les versions el més actualitzades possible.
*http://nodejs.org/dist/
+
<pre>
 +
$ node --version
 +
v16.1.0
  
En aquest cas descarreguem la versió 0.12.18 (abril 2017):
+
$ npm --version
<pre>
+
7.13.0
$ 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
 
</pre>
 
Si la instal.lació ha anat bé ja puc fer la primera prova: ''Hola món!'':
 
<pre>
 
$ ./node
 
> console.log('Hello World');
 
Hello World
 
</pre>
 
O bé si edito el fitxer hello_world.js:
 
<pre>
 
console.log('Hello World');
 
Hello World
 
</pre>
 
El podré invocar fent:
 
<pre>
 
$ ./node hello_world.js
 
Hello World
 
 
</pre>
 
</pre>
  
Línia 57: Línia 38:
 
Hello Http
 
Hello Http
 
</pre>
 
</pre>
=Instal.lació del NPM: Node Package Manager=
+
=NPM (Node Package Manager) per instal·lar el mòdul de mysql=
 
La primera prova que vull fer és fer una connexió a una base de dades mysql. Per fer-ho utiltizaré la comanda:
 
La primera prova que vull fer és fer una connexió a una base de dades mysql. Per fer-ho utiltizaré la comanda:
 
<pre>
 
<pre>
 
var mysql = require('mysql');
 
var mysql = require('mysql');
 
</pre>
 
</pre>
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:
+
però prèviament s'haurà d'instal.lar el módul ''mysql'', i això es fa amb el ''Node Package Manager''.  
 
 
<pre>
 
$ sudo apt-get install npm
 
</pre>
 
Per assegurar-nos de què el tenim ben instal.lat:
 
 
<pre>
 
<pre>
 
$ npm help
 
$ npm help
Línia 80: Línia 56:
 
</pre>
 
</pre>
  
=Accedir a mysql=
+
 
Ara que ja tenim instal.lat el npm podem instal.lar el mòdul de mysql:
+
Instal·lem el mòdul de ''mysql'' (per tal de què NodeJS sàpiga accedir a bases de dades mysql):
 
<pre>
 
<pre>
 
$ npm install mysql
 
$ npm install mysql
Línia 94: Línia 70:
 
   └── sqlstring@2.2.0  
 
   └── 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'
+
</pre>
npm WARN bin No description
+
'''NOTA''': millor instal·lar la versió 2 del mòdul:
npm WARN bin No repository field.
+
<pre>
npm WARN bin No README data
+
$ npm install mysql2
npm WARN bin No license field.
 
 
</pre>
 
</pre>
 
Per fer una connexió a mysql seguim:
 
Per fer una connexió a mysql seguim:
 
*http://blog.josedacruz.com/2013/07/19/learning-node-js-using-mysql/#.UqCxGhwur08
 
*http://blog.josedacruz.com/2013/07/19/learning-node-js-using-mysql/#.UqCxGhwur08
  
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:
+
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 ''municipis'' hostatjada en la màquina localhost:
 
<pre>
 
<pre>
$ mysql -h 192.168.0.15 -u alumne -pkeiL2lai langtrainer
+
$ mysql -h localhost -u alumne -pkeiL2lai municipis
 
</pre>
 
</pre>
  
Script '''acces_langtrainer.js''':
+
Script '''acces_municipis.js''':
 
<pre>
 
<pre>
 
var http = require('http');
 
var http = require('http');
var mysql = require('mysql');
+
var mysql = require('mysql2'); //versió 2 del mòdul
  
 
// Create a connection to MySql Server and Database
 
// Create a connection to MySql Server and Database
Línia 117: Línia 92:
 
   host : 'localhost',
 
   host : 'localhost',
 
   port : 3306,
 
   port : 3306,
   database: 'langtrainer',
+
   database: 'municipis',
 
   user : 'alumne',
 
   user : 'alumne',
 
   password : 'keiL2lai'
 
   password : 'keiL2lai'
Línia 129: Línia 104:
 
     res.write('Connect to mySql\n');
 
     res.write('Connect to mySql\n');
  
       // Query the database to some data  
+
       // Query the database to some data (municipis de Jaén)
     connection.query("SELECT * from langtrainer.word", function(err, rows){
+
     connection.query("select * from municipis m, provincies p where m.id_prov=p.id_prov  and provincia='Jaén'", function(err, rows){
  
 
         // There was a error or not?
 
         // There was a error or not?
Línia 138: Línia 113:
 
             // Shows the result on console window
 
             // Shows the result on console window
 
             //console.log(rows[0]);
 
             //console.log(rows[0]);
for (var i = 0; i < rows.length; i++) {
+
    for (var i = 0; i < rows.length; i++) {
  console.log(rows[i].word);
+
        console.log(rows[i].municipi);
res.write(rows[i].word + '\n');
+
        res.write(rows[i].municipi + '\n');
};
+
    };
    //res.write(rows[1]);
+
    res.write('\n');
    res.write('\n');
 
 
             res.end("Success!");
 
             res.end("Success!");
 
         }
 
         }
 
 
     });
 
     });
 
 
// The server will be listen on port 8080  
 
// The server will be listen on port 8080  
 
}).listen(8080);
 
}).listen(8080);
Línia 154: Línia 126:
 
Executem el script:
 
Executem el script:
 
<pre>
 
<pre>
$ node acces_langtrainer.js
+
$ node acces_municipis.js
 
</pre>
 
</pre>
 
i des d'un navegador web accedim a la url:
 
i des d'un navegador web accedim a la url:
Línia 161: Línia 133:
 
Connect to mySql
 
Connect to mySql
  
deserve (to)
+
Albanchez de Mágina
weird
+
Alcalá la Real
gills
+
Alcaudete
draw breath (to)
+
Aldeaquemada
draw (to)
+
Andújar
snout
+
Arjona
wound
+
Arjonilla
dismiss (to)
+
Arquillos
shame
+
Arroyo del Ojanco
hump
+
...
lump
 
spit
 
  
 
Success!
 
Success!
 
</pre>
 
</pre>
I per la consola també obtenim la llista de les paraules del vocabulari.
+
I per la consola també obtenim la llista dels municipis.
  
 
=Tutorials=
 
=Tutorials=
 
*http://www.nodebeginner.org/index-es.html
 
*http://www.nodebeginner.org/index-es.html
*videotutorial: http://node.codeschool.com/levels/1#
 
*Introduction to Node.js with Ryan Dahl: http://www.youtube.com/watch?v=jo_B4LTHi3I
 
  
{{Autor}}, febrer 2019
+
 
 +
{{Autor}}, febrer 2022

Revisió de 07:50, 22 feb 2022

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.

Descàrrega i instal.lació de Node.js

NodeJS inclous npm, el gestor de paquets de node. Hauríem de tenir les versions el més actualitzades possible.

$ node --version
v16.1.0

$ npm --version
7.13.0

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

NPM (Node Package Manager) per instal·lar el mòdul de mysql

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.

$ 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
...


Instal·lem el mòdul de mysql (per tal de què NodeJS sàpiga accedir a bases de dades 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 

NOTA: millor instal·lar la versió 2 del mòdul:

$ npm install mysql2

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 municipis hostatjada en la màquina localhost:

$ mysql -h localhost -u alumne -pkeiL2lai municipis

Script acces_municipis.js:

var http = require('http');
var mysql = require('mysql2'); //versió 2 del mòdul

// Create a connection to MySql Server and Database
var connection = mysql.createConnection({
  host : 'localhost',
  port : 3306,
  database: 'municipis',
  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 (municipis de Jaén)
    connection.query("select * from municipis m, provincies p where m.id_prov=p.id_prov  and provincia='Jaén'", 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].municipi);
	         res.write(rows[i].municipi + '\n');
	    };
	    res.write('\n');
            res.end("Success!");
        }
    });
// The server will be listen on port 8080 
}).listen(8080);

Executem el script:

$ node acces_municipis.js

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

Connect to mySql

Albanchez de Mágina
Alcalá la Real
Alcaudete
Aldeaquemada
Andújar
Arjona
Arjonilla
Arquillos
Arroyo del Ojanco
...

Success!

I per la consola també obtenim la llista dels municipis.

Tutorials



creat per Joan Quintana Compte, febrer 2022