Programavimas

Kas yra „MEAN“ kaminas? „JavaScript“ žiniatinklio programos

„MEAN“ kaminas, apibrėžtas

„MEAN“ kaminas yra programinės įrangos krūva - tai yra technologijos sluoksnių, sudarančių šiuolaikinę programą, rinkinys, sukurtas tik „JavaScript“. MEAN reiškia „JavaScript“ kaip „visos paketo kūrimo“ kalbos atėjimą, paleidžiantį viską programoje nuo pat galo iki galo. Kiekvienas iš MEAN inicialų reiškia komponentą rietuvėje:

  • MongoDB: Duomenų bazės serveris, kurio klausiama naudojant JSON („JavaScript Object Notation“) ir kuriame duomenų struktūros saugomos dvejetainiu JSON formatu
  • „Express“: Serverio pusės „JavaScript“ sistema
  • Kampinis: Kliento pusės „JavaScript“ sistema
  • Node.js: „JavaScript“ vykdymo laikas

Didelė MEAN patrauklumo dalis yra nuoseklumas, atsirandantis dėl to, kad „JavaScript“ yra per ir per. Kūrėjams gyvenimas yra paprastesnis, nes kiekvienas programos komponentas - nuo duomenų bazės objektų iki kliento kodo - parašytas ta pačia kalba.

Šis nuoseklumas prieštarauja LAMP, ilgą laiką žiniatinklio programų kūrėjų pagrindiniam elementui. Kaip ir „MEAN“, „LAMP“ yra rietuvėje naudojamų komponentų - „Linux“, „Apache“ HTTP serverio, „MySQL“ ir PHP, „Perl“ arba „Python“ - trumpinys. Kiekvienas kamino gabalas turi mažai ką bendro su kitu gabalu.

Tai nereiškia, kad LAMP kaminas yra prastesnis. Jis vis dar plačiai naudojamas, o kiekvienam rietuvės elementui vis tiek naudinga aktyvios plėtros bendruomenė. Bet konceptualus nuoseklumas, kurį suteikia MEAN, yra palaima. Jei visuose kamino lygiuose naudojate tą pačią kalbą ir daugybę tų pačių kalbos sąvokų, kūrėjui tampa lengviau valdyti visą kaminą vienu metu.

Daugumoje MEAN rietuvių yra visi keturi komponentai - duomenų bazė, priekinė, galinė ir vykdymo varikliai. Tai nereiškia, kad šūsnis susideda tik šie elementai, tačiau jie sudaro pagrindą.

MongoDB

Kaip ir kitos „NoSQL“ duomenų bazių sistemos, „MongoDB“ naudoja be schemų dizainą. Duomenys saugomi ir gaunami kaip JSON formato dokumentai, kuriuose gali būti bet koks įdėtų laukų skaičius. Dėl šio lankstumo „MongoDB“ puikiai tinka greitai kurti programas, kai sprendžiami greitai besikeičiantys reikalavimai.

Naudojant „MongoDB“ yra keletas įspėjimų. Pirma, „MongoDB“ turi reputaciją, kad pagal nutylėjimą yra nesaugus. Jei diegiate ją gamybos aplinkoje, turite imtis priemonių, kad ją apsaugotumėte. Kūrėjams, kilusiems iš reliacinių duomenų bazių ar net kitų „NoSQL“ sistemų, turėsite skirti šiek tiek laiko susipažinti su „MongoDB“ ir kaip tai veikia. Martin Heller peržvelgė giliai „MongoDB 4“ apžvalgą, kur jis kalba apie „MongoDB“ vidinius elementus, užklausas ir trūkumus.

Kaip ir bet kuriam kitam duomenų bazės sprendimui, jums reikės kažkokios tarpinės programinės įrangos, kad galėtumėte bendrauti tarp „MongoDB“ ir „JavaScript“ komponentų. Vienas iš įprastų MEAN kamino pasirinkimų yra „Mongoose“. „Mongoose“ suteikia ne tik ryšį, bet ir objektų modeliavimą, programos pusės patvirtinimą ir daugybę kitų funkcijų, kurių nenorite vargti iš naujo sugalvodami kiekvieną naują projektą.

Express.js

„Express“ yra neabejotinai plačiausiai naudojama „Node.js“ žiniatinklio programų sistema. „Express“ teikia tik nedidelį pagrindinių funkcijų rinkinį - iš esmės tai yra minimalus, programuojamas interneto serveris, tačiau jį galima išplėsti naudojant papildinius. Šis nepriekaištingas dizainas padeda išlaikyti „Express“ lengvą ir efektyvų.

Niekas nesako, kad MEAN programa turi būti teikiama tiesiogiai vartotojams per „Express“, nors tai tikrai dažnas scenarijus. Alternatyvi architektūra yra įdiegti kitą žiniatinklio serverį, pvz., „Nginx“ ar „Apache“, priešais „Express“ kaip atvirkštinį tarpinį serverį. Tai leidžia tokias funkcijas kaip apkrovos balansavimas perkrauti į atskirus išteklius.

Kadangi „Express“ yra sąmoningai minimalus, jis neturi daug konceptualių pridėtinių išlaidų. „Expressjs.com“ pamokose galite greitai apžvelgti pagrindus ir sujungti duomenų bazes ir ne tik.

Kampinis

Kampinis (anksčiau AngularJS) naudojamas norint sukurti MEAN programos priekinę dalį. „Angular“ naudoja naršyklės „JavaScript“, kad suformatuotų serverio pateiktus duomenis HTML šablonuose, kad didžiąją dalį tinklalapio pateikimo darbo būtų galima perkrauti klientui. Daugelis vieno puslapio žiniatinklio programų yra sukurtos naudojant „Angular“ priekiniame gale.

Vienas svarbus įspėjimas: Kūrėjai dirba su „Angular“ rašydami „TypeScript“ - į „JavaScript“ panašų tipą, kuris kompiliuojamas į „JavaScript“. Kai kuriems žmonėms tai yra vienos iš pagrindinių „MEAN“ kamino sąvokų pažeidimas - „JavaScript“ naudojamas visur ir išimtinai. Tačiau „TypeScript“ yra artimas „JavaScript“ pusbrolis, todėl perėjimas tarp jų nėra toks drąsus, koks gali būti kitomis kalbomis.

Norėdami giliai pasinerti į „Angular“, padengėte Martiną Hellerį. Savo „Angular“ pamokoje jis padės jums sukurti modernią „Angular“ žiniatinklio programą.

Node.js

Paskutinis, bet vargu ar ne mažiau svarbus dalykas yra „Node.js“ - „JavaScript“ vykdymo laikas, kuris valdo MEAN žiniatinklio programos serverio pusę. „Node“ yra pagrįstas „Google“ V8 „JavaScript“ varikliu, tuo pačiu „JavaScript“ varikliu, kuris veikia „Chrome“ žiniatinklio naršyklėje. „Node“ yra daugiaplatformis, veikia tiek serveriuose, tiek klientuose ir turi tam tikrų pranašumų palyginti su tradiciniais žiniatinklio serveriais, tokiais kaip „Apache“.

„Node.js“ teikia kitokį požiūrį į žiniatinklio užklausų aptarnavimą nei tradiciniai žiniatinklio serveriai. Taikant tradicinį metodą, serveris sukuria naują vykdymo giją arba net sukuria naują procesą, kad būtų galima tvarkyti užklausą. Neršto siūlai yra efektyvesni nei šakiniai procesai, tačiau abu jie turi daug papildomų išlaidų. Didelis gijų skaičius gali priversti sunkiai apkrautą sistemą praleisti brangius ciklus planuodamas gijas ir keisdamas kontekstą, pridėdamas delsos laiką ir nustatydamas mastelio ir pralaidumo ribas.

„Node.js“ yra daug efektyvesnis. Mazgas vykdo vienos gijos įvykių kilpą, užregistruotą sistemoje, kad tvarkytų ryšius, o kiekvienas naujas ryšys suaktyvina „JavaScript“ atgalinio skambinimo funkciją. Atgalinio skambučio funkcija gali apdoroti užklausas su neužblokuojančiais įvesties / išvesties skambučiais ir, jei reikia, gali sukurti grupių gijas, kad būtų galima atlikti blokavimo ar daug procesoriaus reikalaujančias operacijas ir apkrovos balansą visose procesoriaus šerdyse.

„Node.js“ reikia mažiau atminties, kad būtų galima tvarkyti daugiau ryšių, nei daugumoje konkuruojančių architektūrų, kurios keičiasi gijomis, įskaitant „Apache HTTP Server“, „ASP.NET“, „Ruby on Rails“ ir „Java“ programų serverius. Taigi „Node“ tapo itin populiarus pasirinkimas kuriant žiniatinklio serverius, REST API ir realaus laiko programas, tokias kaip pokalbių programos ir žaidimai. Jei yra vienas komponentas, apibrėžiantis „MEAN“ kaminą, tai yra „Node.js“.

Apie „Node.js“ įvadą ieškokite Martino Hellerio paaiškintojo. Norėdami pradėti kurti su „Node“, žiūrėkite jo „Node.js“ pamoką.

„MEAN stack“ pranašumai ir pranašumai 

Šie keturi komponentai, dirbantys kartu, nėra kiekvienos problemos sprendimas, tačiau jie tikrai rado nišą šiuolaikinėje raidoje. IBM suskirsto sritis, kuriose MEAN kaminas atitinka sąskaitą. Kadangi jis yra keičiamo dydžio ir vienu metu gali dirbti su dideliu vartotojų skaičiumi, „MEAN“ kaminas yra ypač geras pasirinkimas debesų programoms. Kampinis priekinis galas taip pat yra puikus pasirinkimas taikant vieno puslapio programas. Pavyzdžiai:

  • Išlaidų stebėjimo programos
  • Naujienų kaupimo svetainės
  • Žemėlapių ir vietos programos

PRASMĖ prieš MERN

Akronimas „MERN“ kartais vartojamas apibūdinant MEAN kaminus, kurie vietoj „Angular“ naudoja „React.js“. „React“ yra pagrindas, o ne visavertė biblioteka, tokia kaip „Angular“, ir yra „pliusų“ ir „minusų“, kuriuos reikia pakeisti „React“ į „JavaScript“ pagrįstą kaminą. Trumpai tariant, „React“ yra lengviau išmokti, o dauguma kūrėjų gali greičiau parašyti ir išbandyti „React“ kodą, nei gali parašyti ir išbandyti pilnavertę „Angular“ programą. „React“ taip pat sukuria geresnius mobiliuosius priekinius galus. Kita vertus, kampinis kodas yra stabilesnis, švaresnis ir efektyvesnis. Apskritai „Angular“ yra pasirinkimas verslo klasės plėtrai.

Tačiau pats faktas, kad šis pasirinkimas jums prieinamas, parodo, kad MEAN nėra ribota kūrėjų striukė. Skirtingus komponentus galite pakeisti ne tik vienu iš keturių kanoninių sluoksnių; taip pat galite pridėti papildomų komponentų. Pvz., Talpyklos, tokios kaip „Redis“ ar „Memcached“, galėtų būti naudojamos „Express“, kad paspartintų atsakymus į užklausas.

MEAN kamino kūrėjai

Turint įgūdžių būti „MEAN stack“ kūrėju, iš esmės reikia tapti „full-stack“ kūrėju, daugiausia dėmesio skiriant konkrečiam čia aptariamam „JavaScript“ įrankių rinkiniui. Tačiau „MEAN stack“ populiarumas reiškia, kad daugelis darbo skelbimų bus skirti „full-stack“ kūrėjams, turintiems MEAN įgūdžių. „Guru99“ sugriauna prielaidas užfiksuoti vieną iš šių darbų. Be pagrindinių MEAN kamino komponentų pažinimo, MEAN kamino kūrėjas turėtų gerai suprasti:

  • Priekiniai ir galiniai procesai
  • HTML ir CSS
  • Programavimo šablonai ir architektūros projektavimo gairės
  • Interneto svetainių kūrimas, nuolatinė integracija ir debesų technologijos
  • Duomenų bazės architektūra
  • Programinės įrangos kūrimo gyvavimo ciklas (SDLC) ir kaip tai sukurti judrioje aplinkoje

Koks yra „MEAN stack“ kūrėjo atlyginimas? Nors visada yra diapazonas, pagrįstas patirtimi ir darbdaviu, tai neabejotinai pelninga sritis. Nuo 2019 m. Gruodžio mėn. „Neuvoo.com“ teigia, kad vidutinis atlyginimas, kurio gali tikėtis MEAN kamino kūrėjas, yra maždaug 125 000 USD per metus. „Indeed.com“ susieja „MEAN“ rinkinių kūrėjus su „full-stack“ programinės įrangos kūrėjais apskritai ir susieja tipinę metinę algą apie 112 000 USD.

MEAN kamino pamokos

Ar jums patiko techniniai pagrindai ir esate pasirengęs pasinerti ir išmokti „MEAN stack“? Yra keletas nemokamų pamokų, kurios gali padėti jums pradėti. „Angular Templates“ svetainėje yra ypač išsami instrukcija, kuri padės jums sukurti paprastą svetainę naudojant „MEAN“ kaminą. „TutorialsPoint“ turi gerą vadovą sukurti vieno puslapio žiniatinklio programą su „MEAN“ kaminu. Mėgaukitės susitepusi rankas ir sėkmės!