Node.js

Introducció a les aplicacions web

  

1. Tipus d’aplicacions

Quan estem utilitzant un ordinador, una tauleta o un telèfon mòbil, quins tipus d’aplicacions o programes podem estar utilitzant? Bàsicament distingim dos grans grups:

1.1. Què és una aplicació web?

Una aplicació web és un tipus de programari que s’executa en un servidor i s’accedix a través d’un navegador web. El navegador actua com a interfície entre l’usuari i el servidor, on es processa la lògica de negoci, s’accedix a bases de dades i es genera la resposta que el navegador presenta a l’usuari.

Amb l’avanç de les tecnologies web, el concepte d’aplicació web s’ha ampliat. Actualment, es considera aplicació web a qualsevol programari desenrotllat amb tecnologies com a HTML, CSS, JavaScript, PHP, etc., que s’executa en un navegador o en un entorn que l’emula, com un WebView o un motor de navegador embegut.

WebView és un component que permet incrustar contingut web dins d’una aplicació mòbil nativa. És comú en aplicacions com Facebook o Instagram, on es carreguen pàgines externes sense obrir el navegador del sistema. Encara que el seu ús és més controlat, oferix rapidesa i cohesió dins de l’app.

1.1.2 Tipus d’aplicacions web modernes

Hui dia, podem identificar diversos tipus d’aplicacions web modernes segons el seu entorn d’execució i les seues capacitats:

2. Arquitectura d’una aplicació web

2.1. Què és “la web”?

La web és una plataforma global que permet accedir a una gran varietat de continguts i servicis: pàgines informatives, aplicacions interactives, xarxes socials, fòrums, vídeos, videojocs, etc.

Des dels seus inicis en els anys 90, amb pàgines estàtiques i correu electrònic, ha evolucionat fins a convertir-se en una plataforma complexa i dinàmica. L’anomenada Web 2.0 va introduir la participació de l’usuari (blogs, xarxes socials, wikis), i hui dia parlem fins i tot d’una Web 3.0, més centrada en la descentralització, la intel·ligència artificial i la personalització.

2.2. Elements d’una aplicació web

Una aplicació web moderna sol estar composta per tres elements principals que treballen de manera coordinada:

2.3. Funcionament d’una aplicació web

Les aplicacions web seguixen una arquitectura client-servidor, en la qual les tasques es repartixen entre:

Seqüència bàsica de funcionament

  1. L’usuari accedix a l’aplicació des del seu navegador (client)
  2. El client envia una petició al servidor (per exemple, per a iniciar sessió o consultar informació)
  3. El servidor processa la sol·licitud, accedix a la base de dades si és necessari i genera una resposta.
  4. El servidor envia la resposta (dades en format JSON, HTML, etc.)
  5. El client interpreta la resposta i mostra la informació a l’usuari i, segons el cas, realitza noves peticions o finalitza la sessió.

2.4 Arquitectura en capes

En moltes aplicacions web modernes, el servidor no és un únic sistema. En el seu lloc, s’organitza en una arquitectura en capes (també anomenada multi-tier), on diferents servicis o màquines s’especialitzen en funcions concretes. Això millora el rendiment, la escalabilitat i la seguretat del sistema.

Per exemple:

Exemple pràctic

Suposem que un usuari accedix a una aplicació web per a consultar notícies. Este procés pot ser representat amb un diagrama de seqüència com el següent:

Exemple d'arquitectura client-servidor
  1. El client (navegador) envia una sol·licitud d’inici de sessió al servidor web.
  2. Després d’iniciar sessió correctament, el client sol·licita un llistat de notícies.
  3. El servidor web processa la petició i, si necessita dades, consulta al servidor de bases de dades.
  4. El servidor de bases de dades respon amb les dades sol·licitades al servidor web.
  5. El servidor web genera una resposta (per exemple, un JSON o un HTML) i l’envia al client.
  6. El client mostra les dades i permet noves interaccions o tancar sessió.

2.4.1 Tipus d’arquitectura

En funció de com s’organitzen els elements del sistema, podem distingir dos models principals:

Més enllà d’estos models clàssics, hui dia també s’empren altres arquitectures modernes, com:

3. Localització i accés a aplicacions web

Perquè una aplicació web estiga disponible en Internet i accessible des de qualsevol navegador, és necessari tindre en compte tres elements clau:

En este apartat s’aborden els conceptes bàsics necessaris per a comprendre com es publica una aplicació web i com s’accedix a ella des de qualsevol part del món. Alguns aspectes més tècnics, com els protocols de comunicació i el sistema DNS, s’estudiaran detalladament en apartats posteriors.

3.1 Allotjament web (hosting)

El hosting és el servici que permet emmagatzemar i servir els arxius d’una aplicació web (HTML, CSS, JS, imatges, bases de dades, etc.) des d’un servidor connectat permanentment a Internet.

Existixen diferents opcions d’allotjament segons el tipus de projecte, el nivell tècnic de l’equip i els recursos disponibles:

3.2 Noms de domini

Encara que les aplicacions web estan allotjades en servidors identificats per la seua adreça IP (per exemple, 172.217.168.78), estos números no són pràctics per a l’ús diari.

Per a facilitar l’accés, s’utilitzen noms de domini, que són adreces web llegibles i fàcils de recordar, com www.iessanvicente.com. Internament, el nom de domini està associat a la IP real del servidor on s’allotja l’aplicació. Gràcies a esta associació, el navegador pot dirigir correctament les sol·licituds sense que l’usuari conega l’adreça IP.

Per exemple, en accedir a www.google.es, el sistema traduïx eixe nom en l’adreça IP corresponent a un dels servidors de Google. Esta conversió la realitza un sistema anomenat DNS (Domain Name System), que s’explicarà en profunditat.

3.2.1 Registre de domini

Per a disposar d’un domini propi, és necessari realitzar un registre de domini, un procés gestionat per empreses autoritzades per la ICANN (Internet Corporation for Assigned Names and Numbers).

Per a registrar un domini, és necessari:

  1. Triar un nom de domini que estiga disponible.
  2. Seleccionar una extensió adequada (.com, .és, .org, etc.).
  3. Registrar el domini a través d’un agent registrador acreditat.
  4. Configurar els registres DNS necessaris per a vincular el domini amb el servidor que allotja l’aplicació.

Una vegada registrat i vinculat al servidor mitjançant el sistema DNS, el domini estarà actiu i accessible des d’Internet.

3.3 URLs

Una URL (Uniform Resource Locator) és l’adreça completa que s’usa per a localitzar un recurs específic dins d’una aplicació web. És la forma en la qual els navegadors realitzen peticions als servidors.

Per exemple, quan escrivim en un navegador una adreça com http://www.miweb.com/paginas/pagina.html, estem introduint una URL per a localitzar un recurs (en este cas, una pàgina HTML).

L’estructura general d’una URL és la següent:

protocol://subdomini.domini.com/carpeta/pagina?param=valor

Este format permet accedir de manera precisa i estructurada a qualsevol recurs dins d’una aplicació web.

Exercici 1:

Hem vist que la ICANN autoritza diverses empreses per a gestionar el registre de noms de domini en Internet. Estes empreses, conegudes com a agents registradors de domini, oferixen diferents plans de pagament per a este servici. Busca en Internet una llista d’agents registradors de domini oficials per a Espanya i consulta els preus que tenen alguns d’ells.

4. Protocols més utilitzats

Perquè els clients i servidors puguen comunicar-se, han de seguir un protocol de comunicació. Un protocol definix una sèrie de regles que especifiquen quin tipus de missatges s’intercanviaran, en quina orde i com ha d’interpretar-los cada part. Això garantix que els dos extrems de la comunicació s’entenguen, fins i tot si són tecnologies distintes.

4.1 Protocol base: TCP/IP

Totes les comunicacions en Internet es recolzen en la família de protocols TCP/IP, que es compon de dos elements principals:

Sobre esta base es construïxen protocols més específics, com els que usen les aplicacions web, el correu electrònic o la transferència d’arxius.

4.2 Protocols web principals: HTTP i HTTPS

En el cas de les aplicacions web, els protocols més utilitzats són:

4.3 Altres protocols d’Internet

Encara que no s’usen directament en aplicacions web, existixen altres protocols de comunicació essencials per a servicis en Internet:

4.4. Funcionament d’HTTP/HTTPS

El protocol HTTP, i la seua versió segura HTTPS, són la base de la comunicació en les aplicacions web. Els dos funcionen sota un model client-servidor, on el navegador (client) realitza una petició i el servidor respon amb el contingut sol·licitat o un missatge d’error. Esta comunicació es realitza seguint un format estandarditzat, que permet que els dos extrems puguen interpretar-la correctament.

Peticions HTTP (requests)

Una petició HTTP és el missatge que el client envia al servidor per a sol·licitar un recurs. Sol estar composta per:

Internament, esta informació s’encapsula en paquets que es fragmenten i envien seguint les regles del protocol TCP.

Respostes HTTP (response)

El servidor analitza la petició i respon amb un missatge estructurat, que inclou:

4.5 Anàlisi de trànsit HTTP amb Google Chrome

Per a observar este intercanvi en temps real, es pot usar l’eina de desenvolupament de Google Chrome, en la pestanya Network, per a analitzar qualsevol comunicació entre el navegador i un servidor web. Això permet identificar codis d’estat, capçaleres i contingut transferit.

Accedix a una web coneguda (per exemple, ceice.gva.es), i comprova la informació enviada i rebuda:

Monitoratge del protocol HTTP amb Google Chrome

Exercici 2:

Utilitza Google Chrome (opció de Ferramentes per a desenrotlladors, pestanya Network) per a veure l’esquema de petició i resposta HTTP cap a alguna web coneguda. Identifica el codi d’estat, les capçaleres de resposta (tracta d’identificar algunes d’elles) i el contingut.

5. Sistema de noms de domini o DNS

Quan dos equips es comuniquen a través d’Internet, el dispositiu d’origen necessita conéixer dos elements fonamentals de la destinació: la seua adreça IP, que identifica de manera única a un equip dins de la xarxa, i el port, que indica el servici específic al qual es desitja accedir dins d’eixe equip, com pot ser una pàgina web o un servidor de correu.

Per exemple, en accedir a una pàgina com www.google.es, el navegador necessita saber quina és l’adreça IP del servidor on està allotjat el lloc, així com el port del servici web corresponent, que normalment és el port 80 per a connexions HTTP o el 443 per a HTTPS.

Les dos dades són essencials per a establir la connexió correctament. Si no es coneix l’adreça IP, les dades no poden arribar a la destinació; si no es coneix el port, el servidor no sabria quina aplicació ha de respondre a la petició.

Encara que és tècnicament possible escriure directament una adreça IP en el navegador per a accedir a un lloc web, això no és pràctic ni intuïtiu. Les adreces IP són difícils de memoritzar i, a més, poden canviar amb el temps. Per contra, els noms de domini com www.google.es són més fàcils de recordar i comprendre. No obstant això, atés que els equips de xarxa funcionen internament amb adreces IP, és necessari un sistema que realitze la traducció entre noms i adreces.

Eixe sistema és el DNS, o Sistema de Noms de Domini (Domain Name System), que s’encarrega de traduir noms de domini a adreces IP i viceversa. Este procés es denomina resolució DNS i resulta fonamental per al funcionament d’Internet.

El DNS utilitza una base de dades que presenta una estructura jeràrquica i distribuïda.

El DNS admet tant direccions IPv4 com IPv6, i emmagatzema la informació necessària en registres especials anomenats registres de recursos (Resource Rècords o RR). Estos registres poden contindre dades com a adreces IP, àlies de dominis, informació de servidors de correu, entre altres. Estos registres s’agrupen en zones, que són parts de l’espai de noms gestionades per un servidor autoritatiu responsable de mantindre i proporcionar eixa informació de forma actualitzada.

A continuació s’aprofundirà en estos elements i en el funcionament detallat del sistema DNS.

5.1. Elements integrants del DNS

El DNS s’estructura en tres components principals: el espai de noms de domini, els servidors de noms i els resolvers.

5.1.1 Espai de noms de domini

L’espai de noms de domini és una estructura jeràrquica en forma d’arbre invertit on cada node conté registres de recursos (RR) que proporcionen informació sobre el component maquinari i programari que recolzen este domini, com per exemple, els hosts, els servidors de noms, els servidors web, els servidors de correu, etc.

Del node arrel, situat en el nivell més alt, partixen les branques que conformen les zones. Estes, al seu torn, poden contindre un o més nodes o dominis que al seu torn poden dividir-se en subdominis segons es baixa en la jerarquia.

Jerarquia de l'espai de noms

És important no confondre els conceptes de zona i domini. Mentres el domini fa referència al nom lògic en la jerarquia del DNS, una zona és la porció de la base de dades que administra un servidor DNS determinat. Un domini pot dividir-se en diverses zones si es distribuïx la seua gestió.

Exemple de zones i dominis

En la figura anterior hi ha tants dominis com requadres de lletres agrupats en 4 zones delimitades per les línies discontínues. El nom de domini corresponent a cada zona (es nomenen segons el seu node superior) és A, B.A, C.A, I.C.A. Cadascuna d’aquestes quatre zones tindrà un o més servidors DNS per a gestionar-la.

5.1.2 Servidors de noms

Els servidors de noms són servidors encarregats de mantindre i proporcionar informació de l’espai de noms o dominis.

Amb esta organització de servidors de noms, i la seua intercomunicació, s’aconseguix la distribució i redundància de l’espai de dominis.

5.1.3 Resolvers

El resoldre és una rutina o component del sistema operatiu que actua com a intermediari entre les aplicacions de l’usuari (com un navegador) i els servidors DNS. Quan una aplicació necessita l’adreça IP corresponent a un nom de domini, el resoldre s’encarrega de gestionar eixa petició i retornar la informació en el format que el sistema puga utilitzar. Normalment, es comunica amb un servidor DNS configurat per defecte en el sistema o la xarxa.

5.2 Procés de resolució DNS

La principal funció d’un servidor DNS és respondre a consultes de clients o d’altres servidors DNS. Existixen dos tipus principals de consultes:

Per tant, les consultes recursives són generalment generades pels clients DNS, mentres que les consultes iteratives són creades pels servidors DNS en consultar a altres servidors.

Consultes iteratives i recursives

En termes generals, el procés que se seguix en una resolució DNS és el següent.

Vegem un exemple concret de resolució de noms per a comprendre millor el procés. Suposem que un client necessita localitzar l’equip www.educacion.gob.es i envia una petició al seu servidor DNS. Assumim també que el seu servidor no té informació sobre eixe domini. Així, observarem com es duu a terme la resolució completa

Exemple del procés de resolució DNS
  1. Consulta inicial del client: un client, mitjançant un navegador web, sol·licita la resolució del nom de domini www.educacion.gob.es. El resolver consulta la seua cau per a veure si té l’adreça IP emmagatzemada.
  2. Consulta al servidor DNS local: si l’adreça no està en la cau, el resolver envia una consulta recursiva al servidor DNS primari o local configurat. Este servidor pot estar dins de l’empresa o en Internet. El servidor DNS local revisa la seua cau i, si troba la informació, retorna l’adreça IP corresponent.
  3. Consultes iteratives del servidor DNS: si el servidor DNS local no pot resoldre la consulta, inicia una sèrie de consultes iteratives per a trobar el servidor autoritatiu del domini:
    • Servidor arrel: consulta al servidor arrel. Si no és autoritatiu, el servidor arrel retorna el nom del servidor responsable del domini de primer nivell (.és).
    • Servidor TLD: consulta al servidor del TLD (.és). Si no és autoritatiu, retorna el nom del servidor responsable del domini de segon nivell (.gob.es).
    • Servidor del domini específic: consulta al servidor del domini de segon nivell (.gob.es). Si no és autoritatiu, retorna el nom del servidor responsable del domini específic (educacion.gob.es).
  4. Resposta del servidor autoritatiu: finalment, s’arriba al servidor autoritatiu per al domini educacion.gob.es, que retorna l’adreça IP de www.educacion.gob.es al servidor DNS local.
  5. Actualització i resposta:
    • El servidor DNS local actualitza la seua cau amb la nova informació.
    • El servidor DNS local envia la resposta al resolver del client.
    • El resolver del client actualitza la seua cau.
    • La resposta arriba al navegador web en el format adequat, completant la sol·licitud de resolució.

Este procés consumix bastant amplada de banda, per la qual cosa és recomanable implementar una solució DNS interna amb cau, especialment en xarxes amb alt trànsit cap a l’exterior, com a col·legis, universitats, biblioteques o grans empreses. Això permet obtindre temps de resposta més ràpids i una millor experiència de navegació web.

Eina DIG

DIG (Domain Information Gopher) és una eina de línia de comandes que realitza cerques en els registres DNS, a través dels noms de servidors, i mostra el resultat. Es pot executar tant en Linux com en Windows encara que, en aquest últim, és possible que siga necessària la seua instal·lació prèvia.

Vegem un exemple de com funciona amb la comanda dig www.gva.es:

Resultat de la comanda dig www.gva.es

Explicació de l’eixida:

Si s’executa DIG especificant l’opció +trace, es mostra una traça dels servidors pels quals passa la consulta fins a arribar al servidor autoritatiu, permetent veure la llista completa de nodes i passos de resolució d’un nom. Això és molt útil per a entendre com funciona el sistema de noms de domini.

6. Patrons de disseny programari

Després de revisar els tipus d’aplicacions web, l’arquitectura bàsica, els protocols més comuns i el paper del DNS, arribem a un component essencial en el desenvolupament d’aplicacions web robustes, mantenibles i eficients: els patrons de disseny.

Un patró de disseny és un conjunt de bones pràctiques, directrius estructurals i components organitzats que proporcionen una solució reutilitzable a problemes comuns en el desenvolupament de programari. El seu objectiu principal és estandarditzar la forma en què es dissenyen i construïxen les aplicacions, facilitant la comprensió del sistema, la col·laboració entre desenrotlladors i la reutilització de components. A més, permeten generar estructures modulars, predictibles i escalables, fent que el codi siga més fàcil de mantindre i estendre.

En l’àmbit de les aplicacions web, existixen diversos patrons de disseny que ens orienten a l’hora d’organitzar el codi, separar responsabilitats i estructurar els distints components. Un dels més utilitzats (i probablement el més conegut) és el patró MVC, que veurem a continuació. A partir d’ell han sorgit altres enfocaments, dissenyats per a adaptar-se a necessitats concretes, entorns moderns o filosofies distintes d’interacció. En este apartat revisarem MVC i algunes de les seues variants més rellevants.

5.1. El patró MVC

MVC són les sigles de Model-Vista-Controlador (Model-View-Controller), i representa un dels patrons més utilitzats tant en aplicacions web com en moltes aplicacions d’escriptori.

Este patró es basa en la divisió del sistema en tres components fonamentals, cada un amb una responsabilitat clarament definida:

Una dels principals avantatges d’este patró és que separa clarament responsabilitats, la qual cosa permet dividir el treball entre diferents perfils professionals. Per exemple, un dissenyador pot centrar-se en les vistes sense necessitat de conéixer la lògica del model o del servidor, mentres que un desenrotllador *backend pot treballar en el controlador i el model sense preocupar-se del disseny visual.

En forma d’esquema, podríem representar-ho així:

Model Vista Controlador

6.2. Altres alternatives a MVC

A partir de la popularitat i estructura de MVC han sorgit altres patrons que ho adapten o reinterpreten per a entorns específics. En la majoria d’estos patrons es manté el model de dades i la vista com a components clau, i es modifica o reemplaça el paper del controlador. Esta família de patrons es coneix genèricament com MVW, (Model-Vista-Qualsevol cosa, o Model-View-Whatever), la qual cosa reflectix la flexibilitat del tercer component.

Estos patrons solen buscar una major modularitat, eliminar la lògica centralitzada dels controladors o facilitar la interactivitat directa entre model i vista. A continuació, es descriuen els més representatius.

El patró MVVM

El patró MVVM (Model-Vista-VistaModel, o Model-View-ViewModel) substituïx el controlador de MVC per un nou component denominat ViewModel (VistaModel), i se centra exclusivament en els components del model i la vista.

En este enfocament, l’usuari interactua directament amb la vista, que està vinculada al model a través del ViewModel. Este component intermedi conté la lògica necessària per a transformar les dades del model en una forma adequada per a ser mostrada en la vista, i també arreplega les accions de l’usuari per a modificar el model. La comunicació entre el model i la vista és bidireccional: els canvis en la vista actualitzen el model, i els canvis en el model es reflectixen automàticament en la vista. Això es coneix com data binding (enllaç de dades).

MVVM és especialment útil en aplicacions on hi ha una única vista principal que s’actualitza dinàmicament, com és el cas de moltes Single Page Applications (SPA), on no es recarreguen pàgines completes sinó que s’actualitzen seccions específiques. Atés que en estes aplicacions no és necessari decidir quina vista carregar (només hi ha una), el controlador perd rellevància i pot ser substituït per este vincle directe model-vista. Frameworks moderns com Angular o Vue.js incorporen conceptes de MVVM, amb diferents nivells de formalitat.

El patró MOVE

El patró MOVE (Model-Operació-Vista-Esdeveniment, o Model-Operation-View-Event) proposa una divisió distinta del rol del controlador, reemplaçant-lo per dos components: esdeveniments i operacions. Els esdeveniments representen accions o successos que ocorren en l’aplicació, generalment generats per la interacció de l’usuari (com fer clic en un botó, enviar un formulari, etc.). Estos esdeveniments desencadenen operacions, que definixen les tasques que l’aplicació pot realitzar (com validar dades, consultar el model o actualitzar la interfície).

En este patró, quan ocorre un esdeveniment, s’executa una operació associada, que pot accedir al model per a obtindre o modificar dades, i generar una vista que es mostra a l’usuari com a resposta. D’esta manera, la lògica que en MVC estava concentrada en el controlador es repartix entre els esdeveniments que l’activen i les operacions que la implementen. Esta separació pot facilitar l’organització del codi i el maneig d’aplicacions amb moltes accions simultànies o asincròniques.

El patró MVP

El patró MVP (Model-Vista-Presentador, o Model-View-Presenter) substituïx el controlador de MVC per un component anomenat presentador. A diferència del controlador, que en MVC pot gestionar múltiples vistes, en MVP cada vista té associat el seu propi presentador, la qual cosa reforça el *encapsulamiento.

En este enfocament, la vista és passiva i no interactua directament amb el model. Tot el flux passa pel presentador: quan l’usuari realitza una acció, esta s’envia al presentador, que accedix al model, obté o actualitza dades, i després actualitza la vista. Això crea una relació clara entre cada parell vista-presentador, la qual cosa facilita la separació de responsabilitats i millora la capacitat de realitzar proves automatitzades.

El patró MVP és molt comú en el desenvolupament d’interfícies gràfiques complexes, tant en aplicacions d’escriptori com mòbils, com en entorns .NET o aplicacions Android.

7. Recursos necessaris

Per a implantar una aplicació web i que els clients puguen utilitzar-la, és necessari comptar amb una sèrie de recursos tant de maquinari com de programari.

7.1. Llenguatges

En el desenvolupament d’aplicacions web és important identificar els llenguatges de programació utilitzats, que es classifiquen segons l’entorn en què s’executen:

7.2. Exemples de programari

A continuació es descriuen els programes concrets que s’utilitzaran durant el curs, tant en el costat client com en el servidor.

En el client, necessitarem un navegador web per a visualitzar i interactuar amb les aplicacions. Existixen diverses opcions disponibles, com Mozilla Firefox, Google Chrome, Microsoft Edge (abans Internet Explorer), Safari o Opera, encara que probablement les millors alternatives per compatibilitat, rendiment i eines per a desenvolupadors són Google Chrome i Mozilla Firefox.

En el servidor, el programari a utilitzar dependrà del llenguatge de programació triat i del sistema operatiu, encara que en el nostre cas, utilitzarem entorns compatibles amb Windows.

Respecte al servidor de bases de dades, existixen múltiples alternatives. D’una banda, tenim les bases de dades relacionals, com MySQL/MariaDB, PostgreSQL, Oracle o SQL Server, totes elles disponibles en versions gratuïtes o comercials segons les necessitats del projecte. D’altra banda, existixen opcions no relacionals o *NoSQL, com MongoDB, que permeten emmagatzemar documents en format JSON i s’adapten especialment bé a estructures de dades flexibles i dinàmiques.

En el nostre curs, utilitzarem MySQL/MariaDB (integrat amb Apatxe i PHP mitjançant XAMPP) i MongoDB (en combinació amb Node.js) com a solucions principals per a emmagatzematge de dades.

IDEs

Per al desenvolupament d’aplicacions és necessari comptar amb un bon entorn de desenvolupament o IDE amb el qual editar el codi, depurar i provar les aplicacions.

Existeixen multitud d’opcions disponibles, la majoria d’elles gratuïtes. Des d’entorns de propòsit general vàlids per a molts llenguatges (Atom, Sublim, Visual Studio Code…) a uns altres més específics i orientats a algun llenguatge en concret, com PhpStorm.

En el nostre cas, optarem per Visual Studio Code, per la seua versatilitat i popularitat creixent. Permet instal·lar multitud d’extensions per a treballar amb diferents tipus de llenguatges i frameworks, i ens permet també una fàcil integració amb PHP i Node.js.

7.3. Webs d’interés

A continuació s’enumeren algunes webs on consultar o descarregar els recursos indicats en aquest tema, per al desenvolupament d’aplicacions en entorn servidor.

Exercici 3:

Utilitza l’eina Google Trends per a buscar els termes de Laravel, Symfony i Node.js. Dedueix a partir de les cerques quin d’ells creus que és més popular actualment. Després, acudeix a la web de InfoJobs i busca ofertes de treball amb aquests tres frameworks, per a determinar quin és el més demandat en l’actualitat.