Cos'è lo stack MEAN? Applicazioni web JavaScript

Lo stack MEAN, definito

Lo stack MEAN è uno stack software, ovvero un insieme di livelli tecnologici che costituiscono un'applicazione moderna, costruito interamente in JavaScript. MEAN rappresenta l'arrivo di JavaScript come linguaggio di "sviluppo full-stack", che esegue tutto in un'applicazione dal front-end al back-end. Ciascuna delle iniziali in MEAN sta per un componente nello stack:

  • MongoDB: un server di database che viene interrogato utilizzando JSON (JavaScript Object Notation) e che memorizza le strutture di dati in un formato JSON binario
  • Express: un framework JavaScript lato server
  • Angular: un framework JavaScript lato client
  • Node.js: un runtime JavaScript

Una parte importante del fascino di MEAN è la coerenza che deriva dal fatto che è JavaScript in tutto e per tutto. La vita è più semplice per gli sviluppatori perché ogni componente dell'applicazione, dagli oggetti nel database al codice lato client, è scritto nella stessa lingua. 

Questa coerenza è in contrasto con il miscuglio di LAMP, il punto fermo di lunga data degli sviluppatori di applicazioni web. Come MEAN, LAMP è l'acronimo dei componenti utilizzati nello stack: Linux, Apache HTTP Server, MySQL e PHP, Perl o Python. Ogni pezzo della pila ha poco in comune con qualsiasi altro pezzo. 

Questo non vuol dire che lo stack LAMP sia inferiore. È ancora ampiamente utilizzato e ogni elemento nello stack beneficia ancora di una comunità di sviluppo attiva. Ma la coerenza concettuale fornita da MEAN è un vantaggio. Se si utilizza la stessa lingua e molti degli stessi concetti di linguaggio a tutti i livelli dello stack, diventa più facile per uno sviluppatore controllare l'intero stack contemporaneamente.

La maggior parte degli stack MEAN include tutti e quattro i componenti: il database, il front-end, il back-end e il motore di esecuzione. Ciò non significa che lo stack sia composto solo da questi elementi, ma ne costituiscono il nucleo.

MongoDB

Come altri sistemi di database NoSQL, MongoDB utilizza un design senza schema. I dati vengono archiviati e recuperati come documenti in formato JSON, che possono avere un numero qualsiasi di campi nidificati. Questa flessibilità rende MongoDB adatto allo sviluppo rapido di applicazioni quando si tratta di requisiti in rapida evoluzione.

L'uso di MongoDB comporta una serie di avvertenze. Per uno, MongoDB ha la reputazione di essere insicuro per impostazione predefinita. Se lo si distribuisce in un ambiente di produzione, è necessario adottare misure per proteggerlo. E per gli sviluppatori provenienti da database relazionali o anche da altri sistemi NoSQL, dovrai dedicare un po 'di tempo a conoscere MongoDB e come funziona. Martin Heller si è immerso in profondità in MongoDB 4 nella recensione di, dove parla degli interni, delle domande e degli svantaggi di MongoDB.

Come con qualsiasi altra soluzione di database, avrai bisogno di un middleware di qualche tipo per comunicare tra MongoDB e i componenti JavaScript. Una scelta comune per lo stack MEAN è Mongoose. Mongoose non fornisce solo la connettività, ma la modellazione degli oggetti, la convalida lato app e una serie di altre funzioni che non vuoi essere disturbato a reinventare per ogni nuovo progetto.

Express.js 

Express è probabilmente il framework per applicazioni web più utilizzato per Node.js. Express fornisce solo una piccola serie di funzionalità essenziali, essenzialmente è un server Web minimo e programmabile, ma può essere esteso tramite plug-in. Questo design senza fronzoli aiuta a mantenere Express leggero e performante.

Nulla dice che un'app MEAN debba essere servita direttamente agli utenti tramite Express, anche se questo è certamente uno scenario comune. Un'architettura alternativa consiste nel distribuire un altro server web, come Nginx o Apache, davanti a Express come proxy inverso. Ciò consente di scaricare funzioni come il bilanciamento del carico su una risorsa separata.

Poiché Express è volutamente minimo, non è associato a un sovraccarico concettuale. I tutorial su Expressjs.com possono portarti da una rapida panoramica delle nozioni di base alla connessione di database e oltre.

Angolare

Angular (precedentemente AngularJS) viene utilizzato per creare il front-end per un'applicazione MEAN. Angular utilizza il JavaScript del browser per formattare i dati forniti dal server in modelli HTML, in modo che gran parte del lavoro di rendering di una pagina Web possa essere scaricato sul client. Molte app Web a pagina singola vengono create utilizzando Angular sul front-end.

Un avvertimento importante: gli sviluppatori lavorano con Angular scrivendo in TypeScript, un linguaggio tipizzato simile a JavaScript che si compila in JavaScript. Per alcune persone questa è una violazione di uno dei concetti cardinali dello stack MEAN: JavaScript è utilizzato ovunque ed esclusivamente. Tuttavia, TypeScript è un cugino stretto di JavaScript, quindi la transizione tra i due non è così stridente come potrebbe essere con altri linguaggi.

Per un'immersione profonda in Angular, Martin Heller ti copre. Nel suo tutorial Angular ti guiderà attraverso la creazione di una moderna app web Angular.

Node.js 

Ultimo, ma non meno importante, c'è Node.js, il runtime JavaScript che alimenta il lato server dell'applicazione web MEAN. Node si basa sul motore JavaScript V8 di Google, lo stesso motore JavaScript che viene eseguito nel browser Web Chrome. Node è multipiattaforma, funziona sia su server che su client e presenta alcuni vantaggi in termini di prestazioni rispetto ai server Web tradizionali come Apache. 

Node.js adotta un approccio diverso per servire le richieste web rispetto ai server web tradizionali. Nell'approccio tradizionale, il server genera un nuovo thread di esecuzione o addirittura esegue il fork di un nuovo processo per gestire la richiesta. La generazione dei thread è più efficiente dei processi di fork, ma entrambi comportano una buona dose di overhead. Un numero elevato di thread può far sì che un sistema con carichi pesanti impieghi cicli preziosi per la pianificazione dei thread e il cambio di contesto, aggiungendo latenza e imponendo limiti alla scalabilità e alla velocità effettiva. 

Node.js è molto più efficiente. Il nodo esegue un ciclo di eventi a thread singolo registrato con il sistema per gestire le connessioni e ogni nuova connessione attiva una funzione di callback JavaScript. La funzione di callback può gestire le richieste con chiamate I / O non bloccanti e, se necessario, può generare thread da un pool per eseguire operazioni di blocco o ad alta intensità di CPU e per bilanciare il carico tra i core della CPU.

Node.js richiede meno memoria per gestire più connessioni rispetto alla maggior parte delle architetture della concorrenza scalabili con i thread, inclusi Apache HTTP Server, ASP.NET, Ruby on Rails e server di applicazioni Java. Pertanto, Node è diventata una scelta estremamente popolare per la creazione di server Web, API REST e applicazioni in tempo reale come app di chat e giochi. Se c'è un componente che definisce lo stack MEAN, è Node.js. 

Per un'introduzione a Node.js, vedere la spiegazione di Martin Heller. Per iniziare a sviluppare con Node, guarda il suo tutorial su Node.js. 

Vantaggi e benefici dello stack MEAN 

Questi quattro componenti che lavorano in tandem non sono la soluzione a tutti i problemi, ma hanno sicuramente trovato una nicchia nello sviluppo contemporaneo. IBM suddivide le aree in cui lo stack MEAN si adatta al conto. Poiché è scalabile e può gestire un gran numero di utenti contemporaneamente, lo stack MEAN è una scelta particolarmente buona per le app native del cloud. Il front-end angolare è anche un'ottima scelta per applicazioni a pagina singola. Esempi inclusi:

  • App per il monitoraggio delle spese
  • Siti di aggregazione di notizie
  • App di mappatura e localizzazione

MEAN vs MERN

L'acronimo "MERN" è talvolta usato per descrivere stack MEAN che utilizzano React.js al posto di Angular. React è un framework, non una libreria a tutti gli effetti come Angular, e ci sono vantaggi e svantaggi nello scambiare React in uno stack basato su JavaScript. In breve, React è più facile da imparare e la maggior parte degli sviluppatori può scrivere e testare il codice React più velocemente di quanto possano scrivere e testare un'app Angular a tutti gli effetti. React produce anche front-end mobili migliori. D'altra parte, il codice Angular è più stabile, più pulito e performante. In generale, Angular è la scelta per lo sviluppo di classe enterprise.

Ma il fatto stesso che questa scelta sia disponibile dimostra che MEAN non è una camicia di forza limitata per gli sviluppatori. Non solo puoi scambiare diversi componenti per uno dei quattro livelli canonici; puoi anche aggiungere componenti complementari. Ad esempio, i sistemi di memorizzazione nella cache come Redis o Memcached potrebbero essere utilizzati all'interno di Express per accelerare le risposte alle richieste.

Sviluppatori di stack MEAN

Avere le capacità per essere uno sviluppatore di stack MEAN implica fondamentalmente diventare uno sviluppatore full-stack, con un focus sul particolare set di strumenti JavaScript di cui abbiamo discusso qui. Tuttavia, la popolarità dello stack MEAN significa che molti annunci di lavoro saranno rivolti a sviluppatori full-stack con competenze specifiche per MEAN. Guru99 abbatte i prerequisiti per ottenere uno di questi lavori. Oltre alla familiarità con i componenti dello stack MEAN di base, uno sviluppatore di stack MEAN dovrebbe avere una buona conoscenza di:

  • Processi front-end e back-end
  • HTML e CSS
  • Modelli di programmazione e linee guida per la progettazione dell'architettura
  • Sviluppo Web, integrazione continua e tecnologie cloud
  • Architettura del database
  • Il ciclo di vita dello sviluppo del software (SDLC) e com'è lo sviluppo in un ambiente agile

Qual è lo stipendio di uno sviluppatore di stack MEAN? Sebbene ci sia sempre una gamma basata sull'esperienza e sul datore di lavoro, è sicuramente un campo redditizio. A dicembre 2019, Neuvoo.com afferma che lo stipendio medio che uno sviluppatore di stack MEAN può aspettarsi è di circa $ 125.000 all'anno. Indeed.com raggruppa gli sviluppatori dello stack MEAN con sviluppatori full-stack più in generale e fissa lo stipendio annuale tipico a circa $ 112.000.

Tutorial sullo stack MEAN

Ti senti a tuo agio con le basi tecniche e sei pronto per immergerti e imparare lo stack MEAN? Esistono numerosi tutorial gratuiti che possono aiutarti a iniziare. Il sito Angular Templates ha un tutorial particolarmente approfondito che ti guida attraverso il processo di creazione di un semplice sito web utilizzando lo stack MEAN. TutorialsPoint ha una buona guida per creare un'applicazione web a pagina singola con lo stack MEAN. Divertiti a sporcarti le mani e buona fortuna!