ŚREDNIA kontra LAMPA w następnym projekcie programistycznym

Przejście od najnowocześniejszej ciekawości do praktycznego konia roboczego nie jest czymś, co czyni wiele technologii. Wczorajsi nowicjusze często nie spełniają obietnic z wersji 0.1. Inaczej jest w przypadku technologii, które składają się na zaciekle akronimowany stos MEAN.

Dopiero kilka lat temu MongoDB, Express.js, AngularJS i Node.js same podnosiły brwi. Teraz dorośli i zebrali się i razem wykonują poważną pracę, kłusując niemałą liczbę programistów z rozległego obozu LAMP. Ale jak dokładnie ten nowomodny ZNACZNIK wypada w porównaniu z LAMPĄ? Kiedy lepiej wybrać sprawdzoną, dojrzałą LAMPĘ zamiast tej nowatorskiej kolekcji technologii zorientowanych na JavaScript?

Odpowiedź brzmi: kiedy prostota i wspólna struktura ułatwiają życie. MongoDB oferuje bardziej elastyczną, dostosowaną warstwę do przechowywania danych. Node.js zapewnia lepszy węzeł do obsługi serwera, a Express pomaga ustandaryzować sposób tworzenia witryn internetowych. Po stronie klienta Angular zapewnia przejrzysty sposób dodawania funkcji interaktywnych i bogatych komponentów opartych na technologii AJAX. Połącz je wszystkie razem, a stworzą czysty, spójny mechanizm przenoszenia danych z użytkownika na farmę dyskową iz powrotem.

Prawdziwe wyjaśnienie jest jednak głębsze. Oto dziewięć powodów, dla których warto dać MEAN szansę na kolejny projekt. Nie każdy ma czas lub budżet, aby wyrzucić i przekodować stare w najnowszym, najmodniejszym frameworku, ani też nie należy wyrzucać solidnej niezawodności przetestowanych w boju narzędzi, takich jak Apache, MySQL czy PHP. Ale w przypadku projektów od podstaw, które mogłyby skorzystać na elastyczności, prostocie i wydajności, przejście na MEAN może uczynić twoje życie lepszym niż myślisz.

MongoDB jest zbudowany dla chmury

Jeśli Twoje plany dotyczące aplikacji internetowych obejmują opłacenie obietnicy chmury na procesor, stos MEAN oferuje atrakcyjną warstwę bazy danych w MongoDB. Ta nowoczesna baza danych jest wyposażona w automatyczne fragmentowanie i pełną obsługę klastrów od razu po wyjęciu z pudełka. Podłącz MongoDB i rozprzestrzeni się w klastrze serwerów, oferując obsługę przełączania awaryjnego i automatyczną replikację. Biorąc pod uwagę łatwość, z jaką aplikacje mogą być opracowywane, testowane i hostowane w chmurze, nie ma powodu, aby nie brać pod uwagę MongoDB przy następnym projekcie.

Struktura MySQL jest ograniczona 

Każdy, kto opracował lub utrzymywał aplikację opartą na LAMP przez jakikolwiek czas, wie, że siła MySQL jako relacyjnej bazy danych może czasami czuć się trochę uwięziona. Podobnie jak wszystkie relacyjne bazy danych, MySQL zmusza Cię do umieszczania danych w tabelach. Nie stanowi to problemu, jeśli każdy wpis pasuje do dokładnie tego samego formatu, ale jak często świat jest tak hojny? Co się stanie, jeśli dwie osoby mają ten sam adres, ale nie to samo konto? A co, jeśli chcesz mieć trzy wiersze adresu zamiast dwóch? Kto nie próbował naprawić relacyjnej bazy danych, umieszczając zbyt wiele danych w jednej kolumnie? Albo w końcu dodajesz kolejną kolumnę, a tabela rozrasta się bez ograniczeń.

Z drugiej strony MongoDB oferuje znacznie bardziej elastyczną strukturę dokumentu. Chcesz dodać nowe informacje osobiste do swoich profili użytkowników? Po prostu dodaj pole do formularza, zwiń je z pozostałymi danymi w dokumencie JSON i umieść je w swojej kolekcji MongoDB. Jest to świetne rozwiązanie w przypadku projektów będących w ruchu i do obsługi danych, które ostatecznie mogą okazać się trudne do ograniczenia w formie tabelarycznej.

Miejsce na dysku jest tanie

Wśród wielkich odkryć relacyjnych baz danych była komenda JOIN. Dzięki JOIN mogliśmy zaoszczędzić miejsce na dysku, usuwając powtarzające się pola, takie jak miasto, stan i kod pocztowy. Przechowując te często używane i powtarzane dane w oddzielnych tabelach, które mogą zostać uwzględnione w przyszłych wynikach za pośrednictwem JOIN, utrzymujemy porządek w naszej bazie danych i niewielkie rozmiary dysków.

Ale JOIN może być trudny dla niektórych i trudny w pamięci RAM i chociaż nadal dobrym pomysłem jest izolowanie i uzyskiwanie dostępu do danych w oddzielnych tabelach za pośrednictwem JOIN, nie ma tak dużej potrzeby oszczędzania miejsca na dysku teraz, gdy dyski są mierzone w wielu terabajtach. Przestrzeń jest tak tania, że ​​niektórzy projektanci baz danych denormalizują swoje dane, ponieważ JOIN są zbyt wolne. Gdy to zrobisz, nie będziesz już potrzebować relacyjnej bazy danych. Dlaczego zamiast tego nie skorzystać z MongoDB?

Node.js upraszcza warstwę serwerową

Poruszanie się po różnych warstwach stosu LAMP może być trudnym tańcem wielu kapeluszy, w którym musisz przetasować różne pliki konfiguracyjne o różnej składni. MEAN upraszcza to poprzez użycie Node.js.

Chcesz zmienić sposób, w jaki aplikacja kieruje żądania? Wlej trochę JavaScript i pozwól Node.js zrobić resztę. Chcesz zmienić logikę używaną do odpowiadania na zapytania? Użyj JavaScript również tam. Jeśli chcesz przepisać adresy URL lub stworzyć dziwne mapowanie, jest to również w JavaScript. Zależność stosu MEAN od Node.js umożliwia umieszczenie tego rodzaju potoków w jednym miejscu, w jednym języku, w jednym stosie logiki. Nie musisz ponownie czytać stron podręcznika dla PHP, Apache i czegokolwiek innego, co dodasz do stosu. Podczas gdy generacja LAMP ma różne pliki konfiguracyjne dla wszystkiego, Node.js całkowicie unika tego problemu. Posiadanie wszystkiego w jednej warstwie oznacza mniej zamieszania i mniejszą szansę na dziwne błędy spowodowane dziwnymi interakcjami między wieloma warstwami.

MEAN sprawia, że ​​kod jest izomorficzny

Prostota nie kończy się na używaniu JavaScript na serwerze. Przechodząc do MEAN, możesz cieszyć się tym samym JavaScriptem również na kliencie, pozostawiając za sobą schizofrenię klient / serwer stosu LAMP. Jeśli piszesz kod dla Node i zdecydujesz, że jest lepiej umieszczony w Angular, możesz go z łatwością przenieść i prawie na pewno będzie działać w ten sam sposób. Ta elastyczność znacznie ułatwia programowanie aplikacji opartych na MEAN. Ponadto, jeśli pracujesz nad projektem, nie musisz szukać eksperta od PHP i JavaScript ani specjalisty od front-endu i back-endu. Zamiast tego cały stos jest JavaScriptem.

JSON wszędzie

Angular i MongoDB mówią w formacie JSON, podobnie jak Node.js i Express. Dane przepływają równo między wszystkimi warstwami bez przepisywania lub ponownego formatowania. Natywny format MySQL służący do odpowiadania na zapytania jest, no cóż, własny. Tak, PHP ma już kod do importowania danych MySQL i ułatwienia przetwarzania w PHP, ale to nie pomaga warstwie klienta. Może to być trochę drobne dla doświadczonych weteranów LAMP, ponieważ istnieje tak wiele dobrze przetestowanych bibliotek, które łatwo konwertują dane, ale wszystko wydaje się nieco nieefektywne i zagmatwane. MEAN używa tego samego formatu JSON dla danych wszędzie, co upraszcza i oszczędza czas przy ponownym formatowaniu podczas przechodzenia przez każdą warstwę. Ponadto wszechobecność JSON w stosie MEAN sprawia, że ​​praca z zewnętrznymi interfejsami API jest o wiele łatwiejsza: POBIERAJ, manipuluj, prezentuj, POST i przechowuj wszystko w jednym formacie.

Node.js jest superszybki

Apache był świetny, ale obecnie Node.js często działa szybciej. Szereg testów porównawczych pokazuje, że Node.js oferuje lepszą wydajność, a jednocześnie robi znacznie więcej. Być może to wiek kodu. Być może architektura sterowana zdarzeniami Node.js jest szybsza. To nie ma znaczenia. W dzisiejszych czasach, szczególnie wśród niecierpliwych użytkowników urządzeń mobilnych, skrócenie wydajności aplikacji nawet o milisekundy jest ważne, a Node.js może to zrobić, oferując jednocześnie kompletny mechanizm Turinga do przeprogramowania.

Głębia ma znaczenie

Miłośnicy PHP lubią trzymać się wielkich bibliotek kodu, które zostały zbudowane dla dominujących platform, takich jak WordPress czy Drupal. Mają dobre powody do dumy, ale ich zalety znikają, gdy Node.js dogania.

Menedżer pakietów Node.js, NPM, jeszcze bardziej ułatwia udostępnianie kodu, a publiczne repozytoria przeznaczone dla Node.js szybko się rozwijają. Chociaż w tej chwili tłum PHP może przewodzić, przyszłość może sprzyjać Node.js. Co więcej, osoby zasiedziałe często okazują się kruche w obliczu zmieniających się trendów. Każda próba unowocześnienia ugruntowanej platformy, takiej jak Drupal, za pomocą nowej wersji oznacza, że ​​znacznie więcej programistów może pozwolić swoim oczom wędrować w kierunku nowszych, bardziej zwinnych platform zbudowanych wokół Node.js.

Angular jest świeży

Porównywanie „A” w „MEAN” z czymkolwiek w stosie LAMP nie jest do końca sprawiedliwe, ponieważ LAMP nie zawiera analogu. Jeśli chcesz zrobić cokolwiek po stronie klienta, jesteś sam. Jasne, istnieje wiele dobrych frameworków opartych na PHP, które współpracują z MySQL, ale każdy jest nieco inny i porusza się we własnym kierunku. Na przykład WordPress, Joomla i Drupal oferują różne strategie i trudno jest się między nimi przełączać, nie mówiąc już o przenoszeniu kodu z jednego do drugiego. Namaszczenie jednego frameworka klienta dodaje spójności i stabilności.

Pomaga również to, że Angular został stworzony przez ludzi z 20-letnim doświadczeniem w tworzeniu aplikacji internetowych. Wiedzieli wystarczająco dobrze, aby pozostawić pracę nad projektami HTML i CSS. Dowiedzieli się również, jak dodać trochę kodu JavaScript do skanowania kodu HTML. Projektanci Angular przyjrzeli się temu, co ludzie robią dobrze, a następnie dostosowali JavaScript do obsługi ludzi. System szablonów i warstwy logiczne są znacznie czystsze niż to, co widzieliśmy wcześniej, po części dlatego, że zespół wymyślił prostsze sposoby wykorzystania lokalnej mocy JavaScript do odgadywania, co robisz.

Mieszać i łączyć

Oczywiście, jeśli jesteś naprawdę wybredny, nie ma powodu, dla którego nie możesz tego trochę pomieszać. Wielu programistów używa MongoDB z Apache i PHP, a inni wolą używać MySQL z Node.js. Angular działa całkiem dobrze z każdym serwerem, nawet takim, na którym działa PHP do dostarczania danych z MySQL. Nie musisz być niewolnikiem akronimów.