bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


nodejs_express

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
nodejs_express [2022/09/09 08:32]
albert_palacios_jimenez [Escollint el tipus de resposta que donem al client]
nodejs_express [2022/09/16 03:11] (actual)
albert_palacios_jimenez [Configurant una carpeta d'arxiu estàtics]
Línia 25: Línia 25:
 \\ \\
  
-===== Autoload amb nodemon ===== +===== Fer anar l'aplicació =====
-Com que estarem fent continuament canvis en codi i el servidor no els actualitza si no parem i reengeguem el servidor, ens anirà molt bé una eina anomenada ''nodemon'', que autocarregarà els canvis: +
-  $ npm install nodemon +
-   +
-Necessitem configurar el projecte per tal que arrenqui ''nodemon'' quan estem desenvolupant o fent canvis a l'estructura de directoris. Podem fer-ho configurant un script a l'arxiu ''package.json''. Amb un editor de text afegeix les següents línies a l'arxiu ''package.json'':+
  
-  "scripts":+Necessitem dues maneres de fer anar l'aplicació
-     "development": "nodemon app.js" +
-  }+
  
-L'arxiu ''package.json'' ha de ser semblant a aquest:+  * Mentre desenvolupem, necessitem fer reinicis continuament per veure els nous canvis 
 +  * Mentre l'aplicació està en funcionament, s'ha de reiniciar sola si es penja o s'atura
  
-  { +Per la primera farem servir el paquet ''nodemon''i per la segona el paquet ''forever''.
-    "name": "myApp", +
-    "version": "1.0.0", +
-    "description": "", +
-    "main": "index.js", +
-    "author": "", +
-    "license": "ISC", +
-    "dependencies":+
-      "express": "^4.18.1", +
-      "nodemon": "^2.0.19" +
-    }, +
-    "scripts":+
-      "development": "nodemon app.js" +
-    } +
-  } +
-   +
-I arrenquem l'aplicació en mode de desenvolupament amb: +
-  $ npm run development +
-  +
  
-\\+  $ npm install nodemon 
 +  $ npm install forever
  
-===== Supervisant l'aplicació =====+El paquet ''nodemon'' observa l'estructura de directoris i reinicia el servidor si hi ha canvis, així podem desenvolupar sense la molèstia d'anar reiniciant nosaltres el servidor
  
-La manera de fer anar l'aplicació quan desenvolupem (i fem canvis al codi o als arxius) és diferent de quan està funcionant pels clients. Habitualment l'aplicació ha de funcionar de manera ininterrompuda, per aquest motiu necessitem el paquet anomenat ''forever''+El paquet ''forever'' observa el servidor i el reinicia si veu que s'ha aturat o quedat penjat, així sabem que funciona encara que no estiguem vigilant contínuament
  
-  $ npm install forever 
      
-''forever'' vigila que l'aplicació no es pengi s'aturi, i la reinicia en cas necessariPer configurar-lo cal afegir l'script a l'arxiu ''package.json'':+Hem de configurar l'arxiu ''package.json'' per poder arrencar el servidor en mode desenvolupament en mode d'aplicacióPodem fer-ho amb un editor de text afegint ''scripts'':
  
     "scripts": {     "scripts": {
Línia 72: Línia 49:
     }     }
  
-ha de quedar semblant a aquest:+L'arxiu ''package.json'' ha de ser semblant a aquest:
  
   {   {
Línia 91: Línia 68:
     }     }
   }   }
 +  
 +Per arrencar l'aplicació quan estem desenvolupant:
  
-I per arrencar l'aplicació en mode de funcionament (no de desenvolupament): +  $ npm run development 
-  $ npm run app+   
 +Per arrencar l'aplicació quan funciona normalment:
  
 +  $ npm run app
 \\ \\
 +
  
 ===== El servidor més simple ===== ===== El servidor més simple =====
Línia 106: Línia 88:
     const port = 3000     const port = 3000
  
-    app.get('/', (req, res) => +    app.get('/', getHello) 
-     res.send('Hello World!'+    async function getHello (req, res) { 
-    })+        res.send(`Hello World`
 +    }
  
     app.listen(port, () => {     app.listen(port, () => {
Línia 116: Línia 99:
 </code> </code>
  
-Aleshores ja pots navegar a: [[http://localhost:3000|http://localhost:3000]] i comprovar que el servidor funciona+Ja pots navegar a: [[http://localhost:3000|http://localhost:3000]] i comprovar que el servidor funciona
  
 Les claus d'aquest codi són: Les claus d'aquest codi són:
Línia 122: Línia 105:
   * Fa servir 'express' per iniciar el servidor   * Fa servir 'express' per iniciar el servidor
   * Escolta les peticions a través del port 3000   * Escolta les peticions a través del port 3000
-  * Qualsevolr URL retorna el text 'Hello World!'+  * Qualsevol URL retorna el text 'Hello World!'
   * Al iniciar-se mostra el text "Example app ... 3000" a través del terminal   * Al iniciar-se mostra el text "Example app ... 3000" a través del terminal
  
Línia 136: Línia 119:
     const port = 3000     const port = 3000
    
-    app.get('/clients', (req, res) => +    app.get('/clients', getClients) 
-      res.send('Llista de clients'+    async function getClients (req, res) { 
-    })+        res.send(`Llista de clients`
 +    }
    
-    app.get('/login', (req, res) => +    app.get('/login', getLogin) 
-      res.send('Entra al sistema'+    async function getLogin (req, res) { 
-    })+        res.send(`Entra al sistema`
 +    }
    
-    app.get('/', (req, res) => +    app.get('/', getHello) 
-     res.send('Hello World!'+    async function getHello (req, res) { 
-    })+        res.send(`Hello World`
 +    }
    
     app.listen(port, () => {     app.listen(port, () => {
Línia 181: Línia 167:
     app.use(express.static('public'))     app.use(express.static('public'))
    
-    app.get('/clients', (req, res) => +    app.get('/clients', getClients) 
-      res.send('Llista de clients'+    async function getClients (req, res) { 
-    })+        res.send(`Llista de clients`
 +    }
    
-    app.get('/login', (req, res) => +    app.get('/login', getLogin) 
-      res.send('Entra al sistema'+    async function getLogin (req, res) { 
-    })+        res.send(`Entra al sistema`
 +    }
    
-    app.get('/', (req, res) => +    app.get('/', getHello) 
-     res.send('Hello World!'+    async function getHello (req, res) { 
-    })+        res.send(`Hello World`
 +    }
    
     app.listen(port, () => {     app.listen(port, () => {
Línia 211: Línia 200:
 Les URLs poden contenir paràmetres, i aquests fan que es rebin uns continguts o uns altres. Els paràmetres van al final de la URL darrera d'un símbol de ''?'' com en aquest exemple: Les URLs poden contenir paràmetres, i aquests fan que es rebin uns continguts o uns altres. Els paràmetres van al final de la URL darrera d'un símbol de ''?'' com en aquest exemple:
  
-[[http://localhost:3000/ebre?opinio=kk|http://localhost:3000/ebre?opinio=kk]]+[[http://localhost:3000/llistat?cerca=cotxe|http://localhost:3000/llistat?cerca=cotxe]]
  
 L'objecte ''req'' ens dóna informació de la crida que ens fa el client, i part d'aquesta informació són els paràmetres de la URL. L'objecte ''req'' ens dóna informació de la crida que ens fa el client, i part d'aquesta informació són els paràmetres de la URL.
Línia 223: Línia 212:
   const port = 3000   const port = 3000
  
-  app.get('/ebre', (req, res) => {+  app.get('/llistat', (req, res) => {
    let query = url.parse(req.url, true).query;    let query = url.parse(req.url, true).query;
-    if (query.opinio && query.opinio == 'kk') { +    if (query.cerca && query.color) { 
-     res.send('Tu flipes xaval!')+     res.send(`Aquí tens el llistat de ${query.cerca} de color ${query.color}`)
     } else {     } else {
-     res.send('El millor riu del món!')+      res.send('Paràmetres incorrectes')
     }     }
   })   })
Línia 240: Línia 229:
 Comprova la diferència al navegar a aquestes direccions: Comprova la diferència al navegar a aquestes direccions:
  
-  * [[http://localhost:3000/ebre?opinio=kk|http://localhost:3000/ebre?opinio=kk]] +  * [[http://localhost:3000/llistat?cerca=cotxes&&color=blau|http://localhost:3000/llistat?cerca=cotxes&&color=blau]] 
-  * [[http://localhost:3000/ebre?opinio=genial|http://localhost:3000/ebre?opinio=genial]] +  * [[http://localhost:3000/llistat?cerca=radio&&color=verd|http://localhost:3000/llistat?cerca=readio&&color=verd]]
-  * [[http://localhost:3000/ebre|http://localhost:3000/ebre]]+
  
 \\ \\
nodejs_express.1662712357.txt.gz · Darrera modificació: 2022/09/09 08:32 per albert_palacios_jimenez