Programavimas

„MEAN vs. LAMP“ jūsų kitam programavimo projektui

Perėjimas nuo pažangiausio smalsumo prie praktinio arkliuko nėra tas, kurį daro daugelis technologijų. Vakarykščiai ankstyvi startuoliai dažnai nesugeba įvykdyti savo pažadų 0.1 versijoje. Netinka technologijoms, sudarančioms nuoširdžiai sutrumpintą MEAN kaminą.

Tik prieš kelerius metus „MongoDB“, „Express.js“, „AngularJS“ ir „Node.js“ patys kilstelėjo antakius. Dabar jie užaugo ir susibūrė į grupę ir kartu dirba rimtą darbą, brakonieriavę nemažą kūrėjų skaičių iš didžiulės LAMP stovyklos. Bet kaip tiksliai šis naujai suprojektuotas MEAN dalykas sukasi prieš LAMP? Kada geriau rinktis gerai patikrintą, subrendusį LAMP, palyginti su šia modernia „JavaScript“ orientuotų technologijų kolekcija?

Atsakymas yra tada, kai paprastumas ir bendra struktūra palengvina jūsų gyvenimą. „MongoDB“ siūlo lankstesnį, patogesnį duomenų saugojimo sluoksnį. „Node.js“ teikia geresnį serverio valdymo ryšį, o „Express“ padeda standartizuoti savo svetainių kūrimą. Klientui „Angular“ suteikia švarų būdą pridėti interaktyvių funkcijų ir AJAX valdomus turtingus komponentus. Sudėkite juos visus ir jie sukurs švarų, nuoseklų duomenų perkėlimo iš vartotojo į diskų ūkį ir vėl mechanizmą.

Tačiau tikrasis paaiškinimas yra gilesnis. Čia mes siūlome devynias priežastis, kodėl MEAN galėtų nufilmuoti savo kitą projektą. Ne visi turi laiko ar biudžeto išmesti ir perkoduoti senus naujausiuose, madingiausiuose rėmuose, taip pat neturėtumėte išmesti tvirto mūšio patikrintų įrankių, tokių kaip Apache, MySQL ar PHP, patikimumo. Tačiau įgyvendinant žaliųjų laukų projektus, kuriems gali būti naudingas lankstumas, paprastumas ir našumas, „PRASMĖ“ gali padaryti jūsų gyvenimą geresnį, nei manote.

„MongoDB“ sukurtas debesims

Jei jūsų žiniatinklio programų planuose numatyta išpildyti debesies centų už procesorių pažadą, „MEAN“ kaminas siūlo įtikinamą duomenų bazės sluoksnį „MongoDB“. Šioje modernioje duomenų bazėje yra automatinis skaldymas ir visa klasterių parama iš karto. Prijunkite „MongoDB“ ir jis pasklinda po jūsų serverių klasterį, kad galėtų pasiūlyti perjungimo palaikymą ir automatinį replikavimą. Atsižvelgiant į tai, kad programas galima lengvai kurti, išbandyti ir priglobti debesyje, nėra daug priežasčių neatsižvelgti į „MongoDB“ kitame projekte.

„MySQL“ struktūra riboja

Kiekvienas, kuris bet kurį laiką sukūrė ar prižiūrėjo LAMP pagrįstą programą, žino, kad „MySQL“, kaip reliacinės duomenų bazės, stiprybė kartais gali jaustis šiek tiek įkalinta. Kaip ir visos reliacinės duomenų bazės, „MySQL“ verčia stumti duomenis į lenteles. Tai nėra problema, jei kiekvienas įrašas atitinka tą patį formatą, bet ar dažnai pasaulis yra toks dosnus? Ką daryti, jei du žmonės naudoja tą patį adresą, bet ne tą pačią sąskaitą? Ką daryti, jei norite, kad adresu būtų trys eilutės, o ne dvi? Kas nebandė ištaisyti reliacinės duomenų bazės per daug duomenų suleisdamas į vieną stulpelį? Arba jūs galų gale pridėsite dar vieną stulpelį, o lentelė auga be ribų.

Kita vertus, „MongoDB“ siūlo kur kas lankstesnę dokumentų struktūrą. Norite pridėti naują asmeninės informacijos truputį prie savo vartotojų profilių? Tiesiog pridėkite lauką prie formos, surinkite jį su likusiais JSON dokumento duomenimis ir įdėkite juos į savo „MongoDB“ kolekciją. Tai puikiai tinka projektams, vykstantiems sraute, ir sprendžiant duomenis, kurie gali būti sudėtingi apriboti lentelės forma.

Disko vieta yra pigi

Tarp didelių reliacinių duomenų bazių atskleidimų buvo JOIN komanda. Naudodamiesi JOIN, galėtume sutaupyti vietos diske, pašalindami pakartotinius laukus, tokius kaip miestas, valstija ir pašto kodas. Saugodami šiuos dažnai pasiekiamus ir kartojamus duomenis atskirose lentelėse, kurias galima įtraukti į būsimus rezultatus per JOIN, mes saugome savo duomenų bazę ir tvarkome savo diskus.

Tačiau JOIN gali būti sudėtinga kai kuriems ir sudėtinga RAM, ir nors vis tiek yra gera idėja izoliuoti duomenis ir prieiti prie jų atskirose lentelėse per JOINs, dabar nereikia tiek taupyti vietos diske, kai diskų įrenginiai matuojami keliais terabaitais. Vieta yra tokia pigi, kad kai kurie duomenų bazių dizaineriai savo duomenis denormalizuoja, nes JOIN yra per lėti. Kai tai padarysite, jums nereikės tiek daug reliacinės duomenų bazės. Kodėl vietoj to nenaudojant „MongoDB“?

„Node.js“ supaprastina serverio sluoksnį

Naršymas po įvairius LAMP kamino sluoksnius gali būti sudėtingas daugelio kepurių šokis, kurį sukeisdami per įvairius konfigūracijos failus su skirtinga sintakse. MEAN tai supaprastina naudodamas Node.js.

Norite pakeisti, kaip programa nukreipia užklausas? Pabarstykite šiek tiek „JavaScript“ ir leiskite Node.js atlikti visa kita. Norite pakeisti logiką, naudojamą atsakant į užklausas? Ten taip pat naudokite „JavaScript“. Jei norite perrašyti URL arba sukurti nelyginį susiejimą, jis taip pat naudojamas „JavaScript“. „MEAN stack“ priklausomybė nuo „Node.js“ sujungė tokius vamzdynus vienoje vietoje, viena kalba ir visa logikos krūva. Jums nereikia iš naujo perskaityti PHP, „Apache“ ir bet ko kito, ką pridėsite prie kamino, vadovų puslapių. Nors LAMP kartoje yra skirtingi konfigūracijos failai viskam, „Node.js“ visiškai vengia šios problemos. Turėti viską viename sluoksnyje reiškia mažiau painiavos ir mažiau keistų klaidų, kurias sukelia keista sąveika tarp kelių sluoksnių, tikimybė.

MEAN daro kodą izomorfišką

Paprastumas nesibaigia naudojant „JavaScript“ serveryje. Eidami MEAN, jūs taip pat galite mėgautis ta pačia „JavaScript“ kliente, palikdami LAMP kamino kliento / serverio šizofreniją. Jei rašote „Node“ kodą ir nusprendžiate, kad jis geriau įdėtas į kampinį, galite jį lengvai perkelti ir beveik neabejotinai, kad jis veiks tokiu pačiu būdu. Dėl šio lankstumo žymiai lengviau programuoti MEAN pagrįstas programas. Be to, jei dirbate projektą, jums nereikia ieškoti PHP eksperto ir „JavaScript“ eksperto ar „front-end“ ir „back-end“ specialisto. Vietoj to, visa „JavaScript“ yra rietuvėje.

JSON visur

„Angular“ ir „MongoDB“ kalba JSON, kaip ir „Node.js“ bei „Express“. Duomenys tvarkingai eina tarp visų sluoksnių, neperrašinėjant ir neperformatuojant. „MySQL“ gimtoji forma, skirta atsakyti į užklausas, yra sava. Taip, PHP jau turi kodą, kad būtų galima importuoti MySQL duomenis ir palengvinti jų apdorojimą PHP, tačiau tai nepadeda kliento sluoksniui. Tai gali būti šiek tiek patyrę LAMP veteranai, nes yra tiek daug patikrintų bibliotekų, kurios lengvai konvertuoja duomenis, tačiau visa tai atrodo šiek tiek neefektyvu ir painu. „MEAN“ visur naudoja tą patį JSON formatą duomenims, o tai supaprastina ir taupo laiko performatavimą pereinant kiekvieną sluoksnį. Be to, JSON visuotinumas naudojant MEAN kaminą leidžia daug lengviau dirbti su išorinėmis API: GAUTI, manipuliuoti, pateikti, POST ir saugoti visus vienu formatu.

„Node.js“ yra labai greitas

„Apache“ buvo puiku, tačiau šiais laikais „Node.js“ dažnai veikia greičiau. Nemažai etalonų rodo, kad „Node.js“ siūlo geresnį našumą, tuo tarpu daro daug daugiau. Galbūt tai yra kodo amžius. Galbūt „Node.js“ architektūra yra greitesnė. Nesvarbu. Šiomis dienomis, ypač tarp nekantrių mobiliojo prietaiso naudotojų, svarbu nuskaityti net milisekundes nuo jūsų programos našumo, o „Node.js“ tai gali padaryti, tuo pačiu pasiūlydamas „Turing-complete“ mechanizmą jos perprogramavimui.

Svarbu gylis

PHP mėgėjai mėgsta laikytis puikių kodų bibliotekų, sukurtų dominuojančioms platformoms, tokioms kaip „WordPress“ ar „Drupal“. Jie turi rimtų priežasčių didžiuotis, tačiau jų pranašumai išgaruoja, nes „Node.js“ pasivijo.

„Node.js“ paketų tvarkyklė „NPM“ palengvina kodo bendrinimą, o viešosios saugyklos, nukreiptos į „Node.js“, greitai auga. Nors šiuo metu PHP minia gali pirmauti, ateitis gali būti naudinga „Node.js“. Be to, atsižvelgiant į besikeičiančias tendencijas, dabartiniai operatoriai dažnai būna trapūs. Kiekvienas bandymas modernizuoti įsitvirtinę platformą, pvz., „Drupal“, su nauja versija reiškia, kad daug daugiau kūrėjų gali leisti savo akims klaidžioti link naujesnių, vikresnių platformų, sukurtų aplink „Node.js“.

Kampinis yra šviežias

Nėra teisinga palyginti „MEAN“ „A“ su kuo nors LAMP kamino, nes LAMP nėra analogo. Jei norite ką nors padaryti kliento pusėje, esate vienas. Žinoma, yra daugybė gerų PHP pagrįstų sistemų, kurios veikia su „MySQL“, tačiau kiekviena yra šiek tiek kitokia ir juda savo kryptimi. Pavyzdžiui, „WordPress“, „Joomla“ ir „Drupal“ siūlo skirtingas strategijas, todėl sunku jas perjungti, jau nekalbant apie prievado kodą iš vieno į kitą. Patepus vieną kliento sistemą, padidėja nuoseklumas ir stabilumas.

Taip pat padeda tai, kad „Angular“ sukūrė žmonės, turintys 20 metų patirtį kuriant žiniatinklio programas. Jie žinojo pakankamai gerai, kad projektavimo darbus paliktų HTML ir CSS. Jie taip pat suprato, kaip pridėti šiek tiek „JavaScript“ nuskaityti HTML. „Angular“ dizaineriai pasižiūrėjo, ką žmonės daro gerai, tada pritaikė „JavaScript“, kad palaikytų žmones. Šablonų sistema ir loginiai sluoksniai yra žymiai švaresni nei tai, ką matėme anksčiau, iš dalies todėl, kad komanda sugalvojo paprastesnius būdus, kaip panaudoti vietinę „JavaScript“ galią atspėti, ką darai.

Maišykite ir derinkite

Žinoma, jei esate tikrai išrankus, nėra jokios priežasties, kodėl negalėtumėte to šiek tiek sumaišyti. Daugybė kūrėjų naudoja „MongoDB“ su „Apache“ ir PHP, o kiti mieliau naudoja „MySQL“ su „Node.js“. „Angular“ veikia gana gerai su bet kuriuo serveriu, net su vienu, kuriame veikia PHP, kad būtų galima pateikti duomenis iš „MySQL“. Nereikia būti santrumpų vergu.