Ohjelmointi

MEAN vs. LAMP seuraavaan ohjelmointiprojektiisi

Siirtyminen huippuluokan uteliaisuudesta käytännön työhevosiin ei ole sellainen, jota monet tekniikat tekevät. Eiliset varhaiset aloittelijat eivät useinkaan pysty täyttämään version 0.1 lupauksiaan. Ei niin tekniikoille, jotka muodostavat kiihkeästi lyhennetyn MEAN-pinon.

Vasta muutama vuosi sitten MongoDB, Express.js, AngularJS ja Node.js nostivat kulmakarvoja yksin. Nyt he ovat kasvaneet ja jengittäneet, ja yhdessä he tekevät vakavaa työtä, salametsästäen pienen määrän kehittäjiä valtavasta LAMP-leiristä. Mutta kuinka tämä uudelleenkäytetty MEAN-juttu pinotaan LAMPia vastaan? Milloin on parempi valita hyvin testattu, kypsä LAMP verrattuna tähän älykkääseen JavaScript-keskitettyjen tekniikoiden kokoelmaan?

Vastaus on, kun yksinkertaisuus ja yhteinen rakenne tekevät elämästäsi helpompaa. MongoDB tarjoaa joustavamman, mukautuvan kerroksen tietojen tallentamiseen. Node.js tarjoaa paremman yhteyden palvelimen käyttämiseen, kun taas Express auttaa standardoimaan verkkosivustojesi rakentamista. Asiakkaalla Angular tarjoaa puhtaan tavan lisätä interaktiivisia toimintoja ja AJAX-ohjaamia rikkaita komponentteja. Laita ne kaikki yhteen ja ne muodostavat puhtaan, johdonmukaisen mekanismin tietojen siirtämiseksi käyttäjältä levytilalle ja takaisin.

Todellinen selitys on kuitenkin syvempi. Tässä tarjoamme yhdeksän syytä antaa MEAN-laukaus seuraavassa projektissasi. Kaikilla ei ole aikaa tai budjettia heittää ja uudelleenkoodata vanha uusimmissa, trendikkäimmissä puitteissa, eikä sinun pitäisi heittää taistelutestattujen työkalujen, kuten Apache, MySQL tai PHP, kovaa luotettavuutta. Mutta vihreän kentän hankkeissa, jotka voisivat hyötyä joustavuudesta, yksinkertaisuudesta ja suorituskyvystä, TÄRKEÄ-meno voi tehdä elämästäsi paremman kuin luulet.

MongoDB on rakennettu pilviä varten

Jos verkkosovellussuunnitelmiin sisältyy pilvipanoksen per CPU-lupauksen hyvittäminen, MEAN-pino tarjoaa houkuttelevan tietokantakerroksen MongoDB: ssä. Tämä moderni tietokanta on varustettu automaattisella sirpaleella ja täydellä klusterituella heti pakkauksesta. Kytke MongoDB ja se leviää palvelinjoukkoosi tarjotakseen vikasietotukea ja automaattista replikointia. Kun otetaan huomioon, kuinka helposti sovelluksia voidaan kehittää, testata ja isännöidä pilvessä, ei ole juurikaan syytä olla ottamatta MongoDB: tä huomioon seuraavassa projektissasi.

MySQL: n rakenne on rajoittava

Jokainen, joka on kehittänyt tai ylläpitänyt LAMP-pohjaista sovellusta mihin tahansa aikaan, tietää, että MySQL: n vahvuus relaatiotietokantana voi tuntua toisinaan hieman vangittuna. Kuten kaikki relaatiotietokannat, MySQL pakottaa sinut työntämään tietosi taulukoihin. Tämä ei ole ongelma, jos jokainen merkintä sopii täsmälleen samaan muotoon, mutta kuinka usein maailma on niin antelias? Entä jos kahdella henkilöllä on sama osoite, mutta ei sama tili? Entä jos haluat, että osoitteeseen tulee kolme riviä kahden sijasta? Kuka ei ole yrittänyt korjata relaatiotietokantaa koristamalla liikaa tietoa yhteen sarakkeeseen? Tai muuten päätät lisätä vielä yhden sarakkeen, ja taulukko kasvaa rajattomaksi.

MongoDB puolestaan ​​tarjoaa paljon joustavamman asiakirjarakenteen. Haluatko lisätä uuden vähän henkilökohtaisia ​​tietoja käyttäjäprofiileihisi? Lisää kenttä yksinkertaisesti lomakkeeseesi, rullaa se yhteen JSON-asiakirjan muiden tietojen kanssa ja työnnä se MongoDB-kokoelmaasi. Tämä sopii erinomaisesti vaihtuviin projekteihin ja sellaisten tietojen käsittelyyn, jotka voivat viime kädessä osoittautua hankaliksi rajoittaa taulukkomuodossa.

Levytila ​​on halpaa

Relaatiotietokantojen suurten paljastusten joukossa oli JOIN-komento. JOINin avulla voimme säästää levytilaa poistamalla toistuvia kenttiä, kuten kaupunki, osavaltio ja postinumero. Tallentamalla tätä usein käytettyä ja toistuvaa tietoa erillisiin taulukoihin, jotka voidaan sisällyttää tuleviin tuloksiin JOINin kautta, pidämme tietokanta siistinä ja levyt ohuina.

Mutta JOIN-tiedostot voivat olla joillekin hankalia ja kovia RAM-muistilla, ja vaikka onkin hyvä idea eristää ja käyttää tietoja erillisissä taulukoissa JOIN-tiedostojen kautta, levytilaa ei tarvitse säästää niin paljon, kun levyasemat mitataan useina teratavuina. Tila on niin halpaa, että jotkut tietokannan suunnittelijat lopulta denormalisoivat tietonsa, koska JOINit ovat liian hitaita. Kun olet tehnyt sen, et tarvitse relaatiotietokantaa niin paljon. Miksi et käytä MongoDB: tä sen sijaan?

Node.js yksinkertaistaa palvelinkerrosta

LAMP-pinon eri kerrosten selaaminen voi olla vaikea tanssi monille hattuille, joka on sekoittanut erilaisia ​​konfigurointitiedostoja erilaisella syntaksilla. MEAN yksinkertaistaa tätä Node.js: n avulla.

Haluatko muuttaa tapaa, jolla sovelluksesi reitittää pyyntöjä? Ripottele jotain JavaScriptiä ja anna Node.js: n tehdä loput. Haluatko muuttaa kyselyihin vastaamisen logiikkaa? Käytä siellä myös JavaScriptiä. Jos haluat kirjoittaa URL-osoitteet uudelleen tai rakentaa parittoman kartoituksen, se on myös JavaScriptissä. MEAN-pinon luottamus Node.js: ään asetti tällaiset putkistot yhteen paikkaan, kaikki yhdellä kielellä, kaikki yhteen logiikkapanokseen. Sinun ei tarvitse lukea man-sivuja uudelleen PHP: lle, Apache: lle ja muulle pinolle lisäämällesi. Vaikka LAMP-sukupolvella on erilaiset asetustiedostot kaikelle, Node.js välttää ongelmaa kokonaan. Jos kaikki on yhdessä kerroksessa, se tarkoittaa vähemmän sekaannusta ja vähemmän mahdollisuuksia outoille virheille, jotka syntyvät outoista vuorovaikutuksista useiden kerrosten välillä.

MEAN tekee koodista isomorfisen

Yksinkertaisuus ei lopu JavaScriptin käyttämiseen palvelimella. Menemällä TÄRKEÄÄ, voit nauttia samasta JavaScriptiestä myös asiakkaalla jättäen taakse LAMP-pinon asiakas / palvelin-skitsofrenian. Jos kirjoitat solmulle koodia ja päätät, että se on parempi sijoittaa kulmikas, voit siirtää sen helposti, ja on melkein varmaa, että se toimii samalla tavalla. Tämä joustavuus tekee MEAN-pohjaisten sovellusten ohjelmoinnista huomattavasti helpompaa. Lisäksi, jos työskentelet projektin parissa, sinun ei tarvitse etsiä PHP-asiantuntijaa ja JavaScript-asiantuntijaa tai käyttöliittymän ja taustan asiantuntijaa. Sen sijaan kaikki JavaScript on pinon yli.

JSON kaikkialla

Angular ja MongoDB puhuvat molemmat JSONia, samoin kuin Node.js ja Express. Tiedot kulkevat siististi kaikkien tasojen välillä kirjoittamatta tai muotoilematta uudelleen. MySQL: n natiivimuoto kyselyihin vastaamiseen on hyvin oma. Kyllä, PHP: llä on jo koodi tuoda MySQL-tietoja ja tehdä siitä helppo käsitellä PHP: ssä, mutta se ei auta asiakaskerrosta. Tämä voi olla hieman vähäistä kokeneille LAMP-veteraaneille, koska on niin monia hyvin testattuja kirjastoja, jotka muuntavat tiedot helposti, mutta kaikki näyttää hieman tehottomalta ja hämmentävältä. MEAN käyttää samaa JSON-muotoa tiedoissa kaikkialla, mikä tekee siitä yksinkertaisempaa ja säästää ajan muotoilua, kun se kulkee jokaisen kerroksen läpi. Lisäksi JSON: n läsnäolo MEAN-pinon kautta tekee työskentelemisestä ulkoisten sovellusliittymien kanssa paljon helpompaa: GET, manipuloida, esittää, POST ja tallentaa kaikki yhdessä muodossa.

Node.js on erittäin nopea

Apache oli hieno, mutta näinä päivinä Node.js on usein tasainen nopeammin. Useat vertailuarvot osoittavat, että Node.js tarjoaa paremman suorituskyvyn ja tekee samalla paljon enemmän. Ehkä se on koodin ikä. Ehkä Node.js-tapahtumapohjainen arkkitehtuuri on nopeampi. Sillä ei ole merkitystä. Nykyään, etenkin kärsimättömien mobiililaitteiden käyttäjien keskuudessa, parranajo jopa millisekunteja sovelluksesi suorituskyvystä on tärkeää, ja Node.js voi tehdä sen samalla, kun se tarjoaa Turing-complete -mekanismin sen ohjelmoimiseksi uudelleen.

Syvyydellä on merkitystä

PHP-ystävät haluavat pitää kiinni suurista koodikirjastoista, jotka on rakennettu hallitseville alustoille, kuten WordPress tai Drupal. Heillä on hyvät syyt olla ylpeitä, mutta niiden edut haihtuvat, kun Node.js saa kiinni.

Node.js-paketinhallinta, NPM, tekee koodin jakamisesta entistä helpompaa, ja Node.js: ään kohdistetut julkiset arkistot kasvavat nopeasti. Vaikka PHP-yleisö saattaa johtaa tällä hetkellä, tulevaisuus voi suosiota Node.js: ää. Lisäksi vakiintuneet toimijat osoittautuvat usein hauraiksi muuttuvien suuntausten edessä. Jokainen yritys uudistaa Drupalin kaltaista vakiintunutta alustaa uudella versiolla tarkoittaa, että monet muut kehittäjät saattavat antaa silmiensä vaeltaa kohti Node.js: n ympärille rakennettuja uudempia, ketterämpiä alustoja.

Kulma on raikas

Ei ole aivan reilua verrata MEAN-kirjaimen A-kirjainta mihinkään LAMP-pinossa olevaan mihinkään, koska LAMP ei sisällä analogia. Jos haluat tehdä mitä tahansa asiakaspuolella, olet yksin. Toki, on olemassa paljon hyviä PHP-pohjaisia ​​kehyksiä, jotka toimivat MySQL: n kanssa, mutta jokainen on hieman erilainen ja liikkuu omaan suuntaan. Esimerkiksi WordPress, Joomla ja Drupal tarjoavat erilaisia ​​strategioita, ja niiden välillä on vaikea vaihtaa, saati porttikoodista toiseen. Yhden asiakaskehyksen voitelu lisää johdonmukaisuutta ja vakautta.

Se auttaa myös, että Angularin ovat rakentaneet ihmiset, joilla on 20 vuoden kokemus verkkosovellusten rakentamisesta. He tiesivät tarpeeksi hyvin jättääkseen suunnittelutyön HTML: n ja CSS: n tehtäväksi. He keksivät myös, kuinka lisätä hieman JavaScriptiä HTML: n skannaamiseksi. Angularin suunnittelijat tarkastelivat, mitä ihmiset tekevät hyvin, ja räätälöivät sitten JavaScriptin tukemaan ihmisiä. Mallijärjestelmä ja logiikkakerrokset ovat dramaattisesti puhtaampia kuin aiemmin olemme nähneet, osittain siksi, että tiimi keksi yksinkertaisempia tapoja hyödyntää JavaScriptin paikallista voimaa arvata mitä teet.

Sekoita ja sovi

Tietysti, jos olet todella nirso, ei ole mitään syytä, miksi et voi sekoittaa sitä hieman. Monet kehittäjät käyttävät MongoDB: tä Apachen ja PHP: n kanssa, ja muut käyttävät mieluummin MySQL: ää Node.js: n kanssa. Angular toimii melko hyvin minkä tahansa palvelimen kanssa, jopa PHP: n kanssa, joka toimittaa tietoja MySQL: stä. Sinun ei tarvitse olla lyhenteiden orja.