Programmering

Hva er MEAN-stakken? JavaScript-applikasjoner

MEAN-stakken, definert

MEAN-stakken er en programvarestabel - det vil si et sett med teknologilag som utgjør en moderne applikasjon - som er bygget i sin helhet i JavaScript. MEAN representerer ankomsten av JavaScript som et “full-stack utvikling” språk, som kjører alt i en applikasjon fra front-end til back-end. Hver av initialene i MEAN står for en komponent i bunken:

  • MongoDB: En databaseserver som spørres med JSON (JavaScript Object Notation) og som lagrer datastrukturer i et binært JSON-format
  • Uttrykke: Et JavaScript-rammeverk på serversiden
  • Vinklet: Et JavaScript-rammeverk på klientsiden
  • Node.js: En JavaScript-kjøretid

En stor del av MEANs appel er konsistensen som kommer av at det er JavaScript gjennom og gjennom. Livet er enklere for utviklere fordi hver komponent i applikasjonen - fra objektene i databasen til klientsiden - er skrevet på samme språk.

Denne konsistensen står i kontrast til hodeløpet til LAMP, den langvarige stiften til webapplikasjonsutviklere. I likhet med MEAN er LAMP et akronym for komponentene som brukes i stabelen — Linux, Apache HTTP Server, MySQL, og enten PHP, Perl eller Python. Hvert stykke av bunken har lite til felles med andre brikker.

Dette er ikke å si at LAMP-stakken er dårligere. Den brukes fortsatt mye, og hvert element i bunken har fortsatt fordeler av et aktivt utviklingssamfunn. Men den konseptuelle konsistensen som MEAN gir, er en velsignelse. Hvis du bruker samme språk, og mange av de samme språkbegrepene, på alle nivåer i stakken, blir det lettere for en utvikler å mestre hele stakken på en gang.

De fleste MEAN-stabler har alle fire komponentene — databasen, frontenden, bakenden og utførelsesmotoren. Dette betyr ikke at stabelen består av kun disse elementene, men de danner kjernen.

MongoDB

I likhet med andre NoSQL-databasesystemer, bruker MongoDB et skjemafritt design. Data lagres og hentes som JSON-formaterte dokumenter, som kan ha et hvilket som helst antall nestede felt. Denne fleksibiliteten gjør MongoDB godt egnet til rask applikasjonsutvikling når det håndteres raskt skiftende krav.

Bruk av MongoDB kommer med en rekke advarsler. For det første har MongoDB rykte for å være usikker som standard. Hvis du distribuerer den i et produksjonsmiljø, må du ta skritt for å sikre den. Og for utviklere som kommer fra relasjonsdatabaser eller til og med andre NoSQL-systemer, må du bruke litt tid på å bli kjent med MongoDB og hvordan den fungerer. ’S Martin Heller dukket dypt inn i MongoDB 4 i sin anmeldelse, hvor han snakker om MongoDB-interner, spørsmål og ulemper.

Som med alle andre databaseløsninger, trenger du mellomvare av noe slag for å kommunisere mellom MongoDB og JavaScript-komponentene. Et vanlig valg for MEAN-stakken er Mongoose. Mongoose gir ikke bare tilkobling, men objektmodellering, validering av app-siden og en rekke andre funksjoner som du ikke vil være plaget med å gjenoppfinne for hvert nye prosjekt.

Express.js

Express er uten tvil det mest brukte nettapplikasjonsrammeverket for Node.js. Express gir bare et lite sett med viktige funksjoner - det er egentlig en minimal, programmerbar webserver - men kan utvides via plugin-moduler. Denne ukompliserte designen holder Express lett og ytende.

Ingenting sier at en MEAN-app må serveres direkte til brukerne via Express, selv om det absolutt er et vanlig scenario. En alternativ arkitektur er å distribuere en annen webserver, som Nginx eller Apache, foran Express som en omvendt proxy. Dette gjør at funksjoner som lastbalansering kan lastes av til en egen ressurs.

Fordi Express bevisst er minimal, har det ikke mye konseptuell overhead knyttet til seg. Opplæringen på Expressjs.com kan ta deg fra en rask oversikt over det grunnleggende til å koble til databaser og videre.

Vinklet

Angular (tidligere AngularJS) brukes til å bygge frontenden for en MEAN-applikasjon. Angular bruker nettleserens JavaScript til å formatere servertilførte data i HTML-maler, slik at mye av arbeidet med å gjengi en webside kan lastes ned til klienten. Mange enkeltsideprogrammer er laget med Angular i frontenden.

En viktig advarsel: Utviklere jobber med Angular ved å skrive i TypeScript, et JavaScript-lignende maskinspråk som kompileres til JavaScript. For noen mennesker er dette et brudd på et av hovedbegrepene i MEAN-stakken - at JavaScript brukes overalt og eksklusivt. TypeScript er imidlertid en nær fetter til JavaScript, så overgangen mellom de to er ikke så skurrende som den kan være med andre språk.

For et dypdykk i Angular, har Martin Heller deg dekket. I sin Angular-veiledning vil han lede deg gjennom opprettelsen av en moderne, Angular web-app.

Node.js

Sist, men neppe minst, er det Node.js — JavaScript-kjøretiden som driver server-siden til MEAN-webapplikasjonen. Node er basert på Googles V8 JavaScript-motor, den samme JavaScript-motoren som kjører i Chrome-nettleseren. Node er plattform, kjører på både servere og klienter, og har visse ytelsesfordeler i forhold til tradisjonelle webservere som Apache.

Node.js tar en annen tilnærming til servering av nettforespørsler enn tradisjonelle webservere. I den tradisjonelle tilnærmingen gyter serveren en ny tråd for utføring eller til og med gafler en ny prosess for å håndtere forespørselen. Gytetråder er mer effektive enn gaffelprosesser, men begge involverer mye overhead. Et stort antall tråder kan føre til at et tungt belastet system bruker dyrebare sykluser på trådplanlegging og kontekstbytte, og legger til ventetid og innfører begrensninger på skalerbarhet og gjennomstrømning.

Node.js er langt mer effektiv. Node kjører en enkelttrådet hendelsessløyfe registrert med systemet for å håndtere tilkoblinger, og hver nye tilkobling får en JavaScript-tilbakeringingsfunksjon til å utløses. Tilbakeringingsfunksjonen kan håndtere forespørsler med ikke-blokkerende I / O-samtaler og kan om nødvendig gyte tråder fra et basseng for å utføre blokkering eller CPU-intensive operasjoner og for å balansere mellom CPU-kjerner.

Node.js krever mindre minne for å håndtere flere tilkoblinger enn de fleste konkurransedyktige arkitekturer som skaleres med tråder - inkludert Apache HTTP-server, ASP.NET, Ruby on Rails og Java-applikasjonsservere. Dermed har Node blitt et ekstremt populært valg for å bygge webservere, REST APIer og sanntidsapplikasjoner som chat-apper og spill. Hvis det er en komponent som definerer MEAN-stakken, er det Node.js.

For en introduksjon til Node.js, se Martin Hellers forklarer. For å komme i gang med å utvikle med Node, se veiledningen til Node.js.

Fordeler og fordeler med MEAN-stakken 

Disse fire komponentene som fungerer sammen er ikke løsningen på alle problemer, men de har definitivt funnet en nisje i moderne utvikling. IBM bryter ned områdene der MEAN-stakken passer til regningen. Fordi den er skalerbar og kan håndtere et stort antall brukere samtidig, er MEAN-stakken et spesielt godt valg for skyinnfødte apper. Den kantede frontenden er også et godt valg for applikasjoner på en side. Eksempler inkluderer:

  • Kostnadssporende apper
  • Nettstedsaggregasjonssteder
  • Kart- og posisjonsapper

BETYD vs. MERN

Forkortelsen "MERN" brukes noen ganger for å beskrive MEAN-stabler som bruker React.js i stedet for Angular. React er et rammeverk, ikke et fullverdig bibliotek som Angular, og det er pluss og minus å bytte React til en JavaScript-basert stabel. Kort fortalt er React lettere å lære, og de fleste utviklere kan skrive og teste React-kode raskere enn de kan skrive og teste en fullverdig Angular-app. React gir også bedre mobile frontender. På den annen side er vinkelkoden mer stabil, renere og mer effektiv. Generelt er Angular valget for utvikling av bedriftsklasse.

Men det faktum at dette valget er tilgjengelig for deg, viser at MEAN ikke er en begrenset tvangstrøye for utviklere. Ikke bare kan du bytte i forskjellige komponenter for ett av de kanoniske fire lagene; Du kan også legge til komplementære komponenter. For eksempel kan caching-systemer som Redis eller Memcached brukes i Express for å få raskere svar på forespørsler.

MEAN stack-utviklere

Å ha ferdighetene til å være en MEAN stack-utvikler innebærer i utgangspunktet å bli full-stack-utvikler, med fokus på det spesifikke settet med JavaScript-verktøy vi har diskutert her. MEAN-stackens popularitet betyr imidlertid at mange stillingsannonser vil være rettet mot full-stack-utviklere med MEAN-spesifikke ferdigheter. Guru99 bryter ned forutsetningene for å fange en av disse jobbene. Utover kjennskap til de grunnleggende MEAN stack-komponentene, bør en MEAN stack-utvikler ha god forståelse av:

  • Front-end og back-end prosesser
  • HTML og CSS
  • Programmeringsmaler og arkitekturretningslinjer
  • Nettutvikling, kontinuerlig integrasjon og skyteknologier
  • Database arkitektur
  • Livssyklus for programvareutvikling (SDLC) og hvordan det utvikler seg i et smidige miljø

Hva er en MEAN stack-utviklerlønn? Selv om det alltid er et utvalg basert på erfaring og arbeidsgiver, er det definitivt et lukrativt felt. Per desember 2019 sier Neuvoo.com medianlønnen som en MEAN stack-utvikler kan forvente er rundt $ 125.000 i året. Indeed.com klemmer MEAN stack-utviklere med full-stack-devs mer generelt, og knytter den typiske årslønnen til rundt $ 112.000.

MEAN stack tutorials

Er du komfortabel med det tekniske grunnleggende og klar til å dykke inn og lære MEAN-stakken? Det er en rekke gratis opplæringer der ute som kan komme i gang. Angular Templates-nettstedet har en spesielt grundig opplæring som guider deg gjennom prosessen med å bygge et enkelt nettsted ved hjelp av MEAN-stakken. TutorialsPoint har en god guide for å bygge en ensidig webapplikasjon med MEAN-stakken. Kos deg med å skitne hendene og lykke til!

$config[zx-auto] not found$config[zx-overlay] not found