Co to jest stos MEAN? Aplikacje internetowe JavaScript

Zdefiniowany stos MEAN

Stos MEAN to stos oprogramowania - to znaczy zestaw warstw technologicznych tworzących nowoczesną aplikację - zbudowany w całości w języku JavaScript. MEAN reprezentuje pojawienie się JavaScript jako języka „pełnego programowania”, uruchamiającego wszystko w aplikacji, od front-endu do backendu. Każdy z inicjałów w MEAN oznacza komponent w stosie:

  • MongoDB: serwer bazy danych, który jest odpytywany za pomocą JSON (JavaScript Object Notation) i który przechowuje struktury danych w binarnym formacie JSON
  • Express: struktura JavaScript po stronie serwera
  • Angular: framework JavaScript po stronie klienta
  • Node.js: środowisko wykonawcze JavaScript

Dużą częścią atrakcyjności MEAN jest konsekwencja wynikająca z faktu, że jest to JavaScript na wskroś. Życie jest prostsze dla programistów, ponieważ każdy składnik aplikacji - od obiektów w bazie danych po kod po stronie klienta - jest napisany w tym samym języku. 

Ta spójność kontrastuje z mieszanką LAMP, od dawna podstawą twórców aplikacji internetowych. Podobnie jak MEAN, LAMP jest akronimem dla komponentów używanych w stosie - Linux, Apache HTTP Server, MySQL oraz PHP, Perl lub Python. Każdy element stosu ma niewiele wspólnego z innym elementem. 

Nie oznacza to, że stos LAMP jest gorszy. Jest nadal szeroko stosowany, a każdy element stosu nadal korzysta z aktywnej społeczności programistów. Ale spójność koncepcyjna, którą zapewnia MEAN, jest dobrodziejstwem. Jeśli używasz tego samego języka i wielu tych samych koncepcji językowych, na wszystkich poziomach stosu, programiście będzie łatwiej opanować cały stos naraz.

Większość stosów MEAN zawiera wszystkie cztery komponenty - bazę danych, interfejs użytkownika, zaplecze i silnik wykonawczy. Nie oznacza to, że stos składa się tylko z tych elementów, ale tworzą one rdzeń.

MongoDB

Podobnie jak inne systemy baz danych NoSQL, MongoDB wykorzystuje projekt bez schematu. Dane są przechowywane i pobierane jako dokumenty w formacie JSON, które mogą mieć dowolną liczbę zagnieżdżonych pól. Ta elastyczność sprawia, że ​​MongoDB dobrze nadaje się do szybkiego tworzenia aplikacji w przypadku szybko zmieniających się wymagań.

Korzystanie z MongoDB wiąże się z wieloma zastrzeżeniami. Po pierwsze, MongoDB ma reputację niezabezpieczonego domyślnie. Jeśli wdrażasz go w środowisku produkcyjnym, musisz podjąć kroki w celu jego zabezpieczenia. A deweloperzy korzystający z relacyjnych baz danych, a nawet innych systemów NoSQL, będą musieli poświęcić trochę czasu na poznanie MongoDB i jego działania. Martin Heller zagłębił się w MongoDB 4 w recenzji, w której mówi o wewnętrznych elementach MongoDB, zapytaniach i wadach.

Podobnie jak w przypadku każdego innego rozwiązania bazodanowego, będziesz potrzebować pewnego rodzaju oprogramowania pośredniczącego do komunikacji między MongoDB a komponentami JavaScript. Powszechnym wyborem stosu MEAN jest Mongoose. Mongoose zapewnia nie tylko łączność, ale także modelowanie obiektów, sprawdzanie poprawności po stronie aplikacji i wiele innych funkcji, których nie chcesz, aby przejmować się ponownym wymyślaniem dla każdego nowego projektu.

Express.js 

Express jest prawdopodobnie najczęściej używaną strukturą aplikacji internetowych dla Node.js. Express zapewnia tylko niewielki zestaw podstawowych funkcji - jest to zasadniczo minimalny, programowalny serwer WWW - ale można go rozszerzyć za pomocą wtyczek. Ta prosta konstrukcja pomaga zachować lekkość i wydajność Express.

Nic nie mówi, że aplikacja MEAN musi być dostarczana bezpośrednio użytkownikom za pośrednictwem Express, chociaż jest to z pewnością typowy scenariusz. Alternatywną architekturą jest wdrożenie innego serwera internetowego, takiego jak Nginx lub Apache, przed Express jako odwrotnego proxy. Pozwala to na przeniesienie funkcji, takich jak równoważenie obciążenia, do oddzielnego zasobu.

Ponieważ Express jest celowo minimalny, nie wiąże się z nim zbyt wiele narzutów koncepcyjnych. Samouczki na Expressjs.com mogą Cię od szybkiego przeglądu podstaw do łączenia baz danych i nie tylko.

Kątowy

Angular (dawniej AngularJS) służy do budowania interfejsu użytkownika dla aplikacji MEAN. Angular używa JavaScript przeglądarki do formatowania danych dostarczonych przez serwer w szablonach HTML, dzięki czemu większość pracy związanej z renderowaniem strony internetowej można odciążyć klienta. Wiele jednostronicowych aplikacji internetowych jest tworzonych w interfejsie Angular.

Jedno ważne zastrzeżenie: programiści pracują z Angularem, pisząc w TypeScript, języku maszynowym podobnym do JavaScript, który kompiluje się do JavaScript. Dla niektórych jest to pogwałcenie jednej z głównych koncepcji stosu MEAN - że JavaScript jest używany wszędzie i wyłącznie. Jednak TypeScript jest bliskim kuzynem JavaScript, więc przejście między nimi nie jest tak wstrząsające, jak w przypadku innych języków.

Aby zagłębić się w Angular, pomoże Ci Martin Heller. W swoim samouczku dotyczącym Angular przeprowadzi Cię przez proces tworzenia nowoczesnej aplikacji internetowej Angular.

Node.js 

Ostatni, ale nie mniej ważny, jest Node.js - środowisko wykonawcze JavaScript, które obsługuje stronę serwera aplikacji internetowej MEAN. Node jest oparty na silniku JavaScript V8 firmy Google, tym samym silniku JavaScript, który działa w przeglądarce internetowej Chrome. Węzeł jest wieloplatformowy, działa zarówno na serwerach, jak i na klientach i ma pewne zalety w zakresie wydajności w porównaniu z tradycyjnymi serwerami internetowymi, takimi jak Apache. 

Node.js ma inne podejście do obsługi żądań WWW niż tradycyjne serwery WWW. W tradycyjnym podejściu serwer generuje nowy wątek wykonania lub nawet forkuje nowy proces do obsługi żądania. Odradzanie wątków jest bardziej wydajne niż rozwidlanie procesów, ale oba wymagają dużego nakładu pracy. Duża liczba wątków może spowodować, że mocno obciążony system będzie poświęcał cenne cykle na planowanie wątków i przełączanie kontekstu, zwiększając opóźnienia i nakładając ograniczenia na skalowalność i przepustowość. 

Node.js jest znacznie wydajniejszy. Węzeł uruchamia jednowątkową pętlę zdarzeń zarejestrowaną w systemie w celu obsługi połączeń, a każde nowe połączenie powoduje uruchomienie funkcji zwrotnej JavaScript. Funkcja wywołania zwrotnego może obsługiwać żądania z nieblokującymi wywołaniami we / wy i, jeśli to konieczne, może tworzyć wątki z puli w celu wykonywania operacji blokujących lub operacji intensywnie wykorzystujących procesor oraz równoważenia obciążenia między rdzeniami procesora.

Node.js wymaga mniej pamięci do obsługi większej liczby połączeń niż większość konkurencyjnych architektur, które skalują się za pomocą wątków - w tym Apache HTTP Server, ASP.NET, Ruby on Rails i serwery aplikacji Java. W ten sposób Node stał się niezwykle popularnym wyborem do budowania serwerów internetowych, interfejsów API REST i aplikacji czasu rzeczywistego, takich jak aplikacje do czatu i gry. Jeśli istnieje jeden komponent, który definiuje stos MEAN, jest to Node.js. 

Aby zapoznać się z wprowadzeniem do Node.js, zobacz wyjaśnienia Martina Hellera. Aby rozpocząć programowanie w Node, zobacz jego samouczek dotyczący Node.js. 

Zalety i zalety stosu MEAN 

Te cztery komponenty działające w tandemie nie są rozwiązaniem każdego problemu, ale zdecydowanie znalazły niszę we współczesnym rozwoju. IBM rozkłada obszary, w których stos MEAN pasuje do rachunku. Ponieważ jest skalowalny i może obsługiwać dużą liczbę użytkowników jednocześnie, stos MEAN jest szczególnie dobrym wyborem dla aplikacji natywnych dla chmury. Front end Angular jest również doskonałym wyborem dla aplikacji jednostronicowych. Przykłady zawierają:

  • Aplikacje do śledzenia wydatków
  • Witryny agregujące wiadomości
  • Aplikacje do mapowania i lokalizacji

MEAN kontra MERN

Akronim „MERN” jest czasami używany do opisania stosów MEAN, które używają React.js zamiast Angular. React to framework, a nie pełnoprawna biblioteka jak Angular, a zamiana Reacta na stos oparty na JavaScript ma swoje plusy i minusy. Krótko mówiąc, React jest łatwiejszy do nauczenia, a większość programistów może pisać i testować kod React szybciej niż mogą napisać i przetestować pełnoprawną aplikację Angular. React tworzy również lepsze mobilne interfejsy. Z drugiej strony kod Angular jest stabilniejszy, czystszy i wydajniejszy. Ogólnie rzecz biorąc, Angular jest wyborem dla rozwoju klasy korporacyjnej.

Ale sam fakt, że ten wybór jest dostępny, pokazuje, że MEAN nie jest ograniczonym kaftanem bezpieczeństwa dla programistów. Możesz nie tylko zamienić różne komponenty na jedną z kanonicznych czterech warstw; możesz również dodać komponenty uzupełniające. Na przykład systemy buforowania, takie jak Redis lub Memcached, mogą być używane w Express, aby przyspieszyć odpowiedzi na żądania.

MEAN programistów stosów

Posiadanie umiejętności bycia programistą stosu MEAN w zasadzie oznacza zostanie programistą full-stack, ze szczególnym naciskiem na konkretny zestaw narzędzi JavaScript, który omówiliśmy tutaj. Jednak popularność stosu MEAN oznacza, że ​​wiele ogłoszeń o pracę będzie skierowanych do pełnoprawnych programistów z umiejętnościami specyficznymi dla MEAN. Guru99 łamie warunki wstępne do złapania jednej z tych prac. Oprócz znajomości podstawowych składników stosu MEAN, programista stosu MEAN powinien dobrze rozumieć:

  • Procesy front-end i back-end
  • HTML i CSS
  • Szablony programistyczne i wytyczne dotyczące projektowania architektury
  • Tworzenie stron internetowych, ciągła integracja i technologie chmurowe
  • Architektura bazy danych
  • Cykl życia oprogramowania (SDLC) i jak to jest tworzyć w zwinnym środowisku

Jaka jest pensja programisty MEAN stack? Chociaż zawsze istnieje zakres oparty na doświadczeniu i pracodawcy, jest to zdecydowanie lukratywna dziedzina. Według Neuvoo.com od grudnia 2019 r. Mediana pensji, jakiej może się spodziewać programista MEAN, wynosi około 125 000 USD rocznie. Indeed.com grupuje deweloperów MEAN z programistami z pełnym stosem, bardziej ogólnie, i ustala typowe roczne wynagrodzenie na około 112 000 USD.

Samouczki dotyczące stosu MEAN

Czy czujesz się dobrze z podstawami technicznymi i jesteś gotowy, aby zanurkować i nauczyć się stosu MEAN? Istnieje wiele bezpłatnych samouczków, od których możesz zacząć. Witryna Angular Templates zawiera szczególnie dokładny samouczek, który poprowadzi Cię przez proces tworzenia prostej witryny internetowej przy użyciu stosu MEAN. TutorialsPoint zawiera dobry przewodnik po tworzeniu jednostronicowej aplikacji internetowej ze stosem MEAN. Ciesz się brudzeniem rąk i powodzenia!