Programmering

Hvad er MEAN-stakken? JavaScript-webapplikationer

MEAN-stakken, defineret

MEAN-stakken er en softwarestak - det vil sige et sæt teknologilag, der udgør en moderne applikation - der er bygget helt i JavaScript. MEAN repræsenterer ankomsten af ​​JavaScript som et “fuld-stack-udviklingssprog”, der kører alt i en applikation fra front-end til back-end. Hver af initialerne i MEAN står for en komponent i stakken:

  • MongoDB: En databaseserver, der forespørges ved hjælp af JSON (JavaScript Object Notation), og som lagrer datastrukturer i et binært JSON-format
  • Express: En JavaScript-ramme på serversiden
  • Vinkel: En JavaScript-ramme på klientsiden
  • Node.js: En JavaScript-kørselstid

En stor del af MEANs appel er konsistensen, der kommer fra det faktum, at det er JavaScript igennem og igennem. Livet er enklere for udviklere, fordi alle komponenter i applikationen - fra objekterne i databasen til klientsideskoden - er skrevet på det samme sprog.

Denne konsistens står i modsætning til hampen fra LAMP, den langvarige hæfteklamme for webapplikationsudviklere. Ligesom MEAN er LAMP et akronym for de komponenter, der bruges i stakken — Linux, Apache HTTP-server, MySQL og enten PHP, Perl eller Python. Hvert stykke af stakken har meget lidt til fælles med ethvert andet stykke.

Dette betyder ikke, at LAMP-stakken er ringere. Det er stadig meget brugt, og hvert element i stakken drager stadig fordel af et aktivt udviklingssamfund. Men den konceptuelle konsistens, som MEAN giver, er en velsignelse. Hvis du bruger det samme sprog og mange af de samme sprogkoncepter på alle niveauer i stakken, bliver det lettere for en udvikler at mestre hele stakken på én gang.

De fleste MEAN-stakke har alle fire komponenter - databasen, frontenden, bagenden og udførelsesmotoren. Dette betyder ikke, at stakken består af kun disse elementer, men de danner kernen.

MongoDB

Ligesom andre NoSQL-databasesystemer bruger MongoDB et skemafrit design. Data gemmes og hentes som JSON-formaterede dokumenter, som kan have et vilkårligt antal indlejrede felter. Denne fleksibilitet gør MongoDB velegnet til hurtig applikationsudvikling, når man håndterer hurtigt skiftende krav.

Brug af MongoDB leveres med et antal advarsler. For det første har MongoDB ry for at være usikker som standard. Hvis du installerer det i et produktionsmiljø, skal du tage skridt til at sikre det. Og for udviklere, der kommer fra relationsdatabaser eller endda andre NoSQL-systemer, skal du bruge lidt tid på at lære MongoDB at kende, og hvordan det fungerer. 'S Martin Heller dykkede dybt ned i MongoDB 4 i' s anmeldelse, hvor han taler om MongoDB interner, forespørgsler og ulemper.

Som med enhver anden databaseløsning har du brug for middleware af en eller anden art for at kommunikere mellem MongoDB og JavaScript-komponenterne. Et almindeligt valg for MEAN-stakken er Mongoose. Mongoose giver ikke kun tilslutningsmuligheder, men objektmodellering, validering af app-side og en række andre funktioner, som du ikke vil være generet af at genopfinde for hvert nye projekt.

Express.js

Express er uden tvivl den mest udbredte ramme for webapplikationer til Node.js. Express giver kun et lille sæt væsentlige funktioner - det er i det væsentlige en minimal, programmerbar webserver - men kan udvides via plug-ins. Dette design uden dikkedarer hjælper med at holde Express let og performant.

Intet siger, at en MEAN-app skal serveres direkte til brugerne via Express, selvom det bestemt er et almindeligt scenario. En alternativ arkitektur er at installere en anden webserver, som Nginx eller Apache, foran Express som en omvendt proxy. Dette gør det muligt for funktioner som belastningsbalancering at blive aflæst til en separat ressource.

Da Express bevidst er minimal, har det ikke meget konceptuel overhead forbundet med det. Selvstudierne på Expressjs.com kan tage dig fra et hurtigt overblik over det grundlæggende til at forbinde databaser og videre.

Vinklet

Angular (tidligere AngularJS) bruges til at bygge frontenden til en MEAN-applikation. Angular bruger browserens JavaScript til at formatere serveroplysninger i HTML-skabeloner, så meget af arbejdet med at gengive en webside kan downloades til klienten. Mange web-apps til en side er bygget ved hjælp af Angular i frontenden.

En vigtig advarsel: Udviklere arbejder med Angular ved at skrive i TypeScript, et JavaScript-lignende typesprog, der kompileres til JavaScript. For nogle mennesker er dette en krænkelse af et af hovedbegreberne i MEAN-stakken - at JavaScript bruges overalt og udelukkende. TypeScript er dog en nær fætter til JavaScript, så overgangen mellem de to er ikke så skurrende som den kan være med andre sprog.

For et dybt dyk ind i Angular har Martin Heller dig dækket. I sin Angular-vejledning leder han dig gennem oprettelsen af ​​en moderne, Angular webapp.

Node.js

Sidst, men næppe mindst, er der Node.js — JavaScript-runtime, der driver serversiden af ​​MEAN-webapplikationen. Node er baseret på Googles V8 JavaScript-motor, den samme JavaScript-motor, der kører i Chrome-webbrowseren. Node er på tværs af platforme, kører på både servere og klienter og har visse ydelsesfordele i forhold til traditionelle webservere som Apache.

Node.js tager en anden tilgang til servering af webanmodninger end traditionelle webservere. I den traditionelle tilgang gyder serveren en ny udførelsestråd eller forkaster endda en ny proces til håndtering af anmodningen. Gydetråde er mere effektive end gaffelprocesser, men begge involverer en hel del overhead. Et stort antal tråde kan få et tungt belastet system til at bruge dyrebare cyklusser på trådplanlægning og kontekstskift, tilføje latens og pålægge grænser for skalerbarhed og kapacitet.

Node.js er langt mere effektiv. Node kører en enkeltgevindet hændelsesløkke, der er registreret i systemet til at håndtere forbindelser, og hver nye forbindelse får en JavaScript-tilbagekaldsfunktion til at udløse. Callback-funktionen kan håndtere anmodninger med ikke-blokerende I / O-opkald og kan om nødvendigt gyde tråde fra en pool for at udføre blokerende eller CPU-intensive operationer og for at indlæse balance på tværs af CPU-kerner.

Node.js kræver mindre hukommelse for at håndtere flere forbindelser end de fleste konkurrencedygtige arkitekturer, der skaleres med tråde - inklusive Apache HTTP-server, ASP.NET, Ruby on Rails og Java-applikationsservere. Således er Node blevet et ekstremt populært valg til opbygning af webservere, REST API'er og realtidsapplikationer som chatapps og spil. Hvis der er en komponent, der definerer MEAN-stakken, er det Node.js.

For en introduktion til Node.js, se Martin Hellers forklarer. For at komme i gang med at udvikle med Node, se hans Node.js tutorial.

Fordele og fordele ved MEAN-stakken 

Disse fire komponenter, der arbejder sammen, er ikke løsningen på ethvert problem, men de har bestemt fundet en niche i nutidig udvikling. IBM nedbryder de områder, hvor MEAN-stakken passer til regningen. Fordi den er skalerbar og kan håndtere et stort antal brugere samtidigt, er MEAN-stakken et særligt godt valg til cloud-native apps. Den kantede frontende er også et godt valg til applikationer på en side. Eksempler inkluderer:

  • Udgifter til sporing af apps
  • Nyhedsaggregationssider
  • Kort- og placeringsapps

BETYDNING vs. MERN

Forkortelsen "MERN" bruges undertiden til at beskrive MEAN-stakke, der bruger React.js i stedet for Angular. React er en ramme, ikke et fuldt udbygget bibliotek som Angular, og der er plusser og minusser til at bytte React til en JavaScript-baseret stak. Kort fortalt er React lettere at lære, og de fleste udviklere kan skrive og teste React-kode hurtigere, end de kan skrive og teste en fuldgyldig Angular-app. React producerer også bedre mobile frontender. På den anden side er kantet kode mere stabil, renere og performant. Generelt er Angular valget for udvikling af virksomhedsklassen.

Men selve det faktum, at dette valg er tilgængeligt for dig, viser, at MEAN ikke er en begrænset tvangstrøje til udviklere. Ikke kun kan du bytte forskellige komponenter til et af de kanoniske fire lag; du kan også tilføje supplerende komponenter. For eksempel kan caching-systemer som Redis eller Memcached bruges i Express til at fremskynde svar på anmodninger.

MEAN stack-udviklere

At have færdighederne til at være en MEAN stack-udvikler indebærer grundlæggende at blive en full-stack-udvikler med fokus på det specifikke sæt JavaScript-værktøjer, vi har diskuteret her. MEAN-stakens popularitet betyder imidlertid, at mange jobannoncer vil være rettet mod fuld-stack-udviklere med MEAN-specifikke færdigheder. Guru99 nedbryder forudsætningerne for at fange et af disse job. Ud over fortrolighed med de grundlæggende MEAN stack-komponenter skal en MEAN stack-udvikler have en god forståelse af:

  • Front-end og back-end processer
  • HTML og CSS
  • Programmeringsskabeloner og arkitekturretningslinjer
  • Webudvikling, kontinuerlig integration og cloud-teknologier
  • Database arkitektur
  • Livscyklus til softwareudvikling (SDLC) og hvordan det udvikler sig i et smidigt miljø

Hvad er en MEAN stack-udvikleres løn? Mens der altid er en række baseret på erfaring og arbejdsgiver, er det bestemt et lukrativt felt. Fra december 2019 siger Neuvoo.com, at den gennemsnitlige løn, som en MEAN-stack-udvikler kan forvente, er omkring $ 125.000 om året. Indeed.com klumper MEAN-stack-udviklere ind med full-stack-devs mere generelt og knytter den typiske årsløn til omkring $ 112.000.

MEAN stack tutorials

Er du fortrolig med de tekniske grundlæggende og klar til at dykke ind og lære MEAN-stakken? Der er en række gratis tutorials derude, der kan komme i gang. Webstedet Angular Templates har en særlig grundig tutorial, der guider dig gennem processen med at opbygge et simpelt websted ved hjælp af MEAN-stakken. TutorialsPoint har en god guide til opbygning af en enkeltsides webapplikation med MEAN-stakken. Nyd at få dine hænder beskidte og held og lykke!