СРЕДСТВО срещу LAMP за следващия ви програмен проект

Преходът от авангардно любопитство към практичен работен кон не е такъв, който правят много технологии. Вчерашните преждевременни стартове често не успяват да изпълнят обещанието си от Версия 0.1. Не е така за технологиите, които съставляват яростно съкратения стек MEAN.

Само преди няколко години MongoDB, Express.js, AngularJS и Node.js сами повдигаха вежди. Сега те са пораснали и са станали банди и заедно вършат сериозна работа, бракувайки не малък брой разработчици от огромния лагер на LAMP. Но как точно това новомодно СРЕДСТВО се натрупва срещу LAMP? Кога е по-добре да изберете добре тествания, зрял LAMP пред тази нова колекция от JavaScript-ориентирани технологии?

Отговорът е, когато простотата и общата структура улесняват живота ви. MongoDB предлага по-гъвкав, приспособим слой за съхранение на данни. Node.js осигурява по-добра връзка за стартиране на вашия сървър, докато Express помага за стандартизиране на начина, по който изграждате уебсайтовете си. На клиента Angular предоставя изчистен начин за добавяне на интерактивни функции и управлявани от AJAX богати компоненти. Съберете ги всички заедно и те създават изчистен, съгласуван механизъм за преместване на данни от потребител към дискова ферма и обратно.

Истинското обяснение обаче е по-дълбоко. Тук предлагаме девет причини да дадете шанс на MEAN със следващия си проект. Не всеки има време или бюджет да изхвърли и прекодира старото в най-новата, модерна рамка, нито трябва да изхвърляте солидната надеждност на тествани в битки инструменти като Apache, MySQL или PHP. Но за проекти на зелено поле, които биха могли да се възползват от гъвкавост, простота и производителност, преминаването на MEAN може да направи живота ви по-добър, отколкото мислите.

MongoDB е създаден за облака

Ако плановете ви за уеб приложения включват изпълнение на обещанието за пени на процесор на облака, стекът MEAN предлага завладяващ слой от база данни в MongoDB. Тази модерна база данни е снабдена с автоматично заличаване и пълна поддръжка на клъстери, веднага от кутията. Включете MongoDB и той се разпространява във вашия клъстер от сървъри, за да предложи поддръжка при отказ и автоматична репликация. Предвид лекотата, с която приложенията могат да бъдат разработвани, тествани и хоствани в облака, няма малка причина да не помислите за MongoDB за следващия си проект.

Структурата на MySQL е ограничаваща 

Всеки, който е разработил или поддържал LAMP-базирано приложение за каквото и да е време, знае, че силата на MySQL като релационна база данни понякога може да се почувства малко затворническа. Подобно на всички релационни бази данни, MySQL ви принуждава да натискате данните си в таблици. Това не е проблем, ако всеки отделен запис се вписва в абсолютно същия формат, но колко често светът е толкова щедър? Ами ако двама души споделят един и същ адрес, но не един и същ акаунт? Ами ако искате да имате три реда до адреса вместо два? Кой не се е опитвал да поправи релационна база данни, като обуе твърде много данни в една колона? Или в крайна сметка добавяте още една колона и таблицата расте неограничена.

MongoDB, от друга страна, предлага структура на документи, която е много по-гъвкава. Искате ли да добавите нов бит лична информация към потребителските си профили? Просто добавете полето към формуляра си, навийте го с останалите данни в JSON документ и го вкарайте във вашата колекция MongoDB. Това е чудесно за потоци на проекти и за работа с данни, които в крайна сметка може да се окажат трудни за ограничаване под формата на таблици.

Дисковото пространство е евтино

Сред големите разкрития на релационни бази данни беше командата JOIN. С JOIN бихме могли да спестим дисково пространство, като премахнем повтарящи се полета като град, щат и пощенски код. Чрез съхраняване на тези често достъпвани и повтарящи се данни в отделни таблици, които могат да бъдат включени в бъдещи резултати чрез JOIN, поддържаме нашата база данни подредена, а дисковете ни тънки.

Но JOINs могат да бъдат трудни за някои и трудни за RAM и въпреки че все още е добра идея да се изолират и да се получат достъп до данни в отделни таблици чрез JOINs, няма толкова голяма нужда от спестяване на дисково пространство сега, когато дисковите устройства се измерват в множество терабайта. Пространството е толкова евтино, че в крайна сметка някои дизайнери на бази данни денормализират данните си, тъй като JOINs са твърде бавни. След като направите това, нямате нужда от релационна база данни толкова много. Защо вместо това да не използвате MongoDB?

Node.js опростява сървърния слой

Навигирането в различните слоеве на LAMP стека може да бъде труден танц на много шапки, който ви кара да разбърквате различни конфигурационни файлове с различен синтаксис. MEAN опростява това чрез използване на Node.js.

Искате ли да промените как заявките за маршрути на приложението ви? Поръсете с малко JavaScript и оставете Node.js да свърши останалото. Искате ли да промените логиката, използвана за отговаряне на запитвания? Използвайте и JavaScript там. Ако искате да пренапишете URL адреси или да създадете странно картографиране, това също е в JavaScript. Разчитането на стека MEAN на Node.js поставя този вид тръбопроводи всичко на едно място, всичко на един език, всичко на една купчина логика. Не е необходимо да препрочитате ръководствата за PHP, Apache и всичко друго, което добавяте към стека. Докато поколението LAMP има различни конфигурационни файлове за всичко, Node.js избягва изобщо този проблем. Наличието на всичко в един слой означава по-малко объркване и по-малък шанс за странни грешки, създадени от странни взаимодействия между множество слоеве.

MEAN прави кода изоморфен

Простотата не спира с използването на JavaScript на сървъра. Като отидете на MEAN, можете да се насладите на същия JavaScript и на клиента, оставяйки след себе си шизофренията на клиента / сървъра на LAMP стека. Ако напишете код за Node и решите, че е по-добре поставен в Angular, можете да го преместите с лекота и е почти сигурно, че ще се изпълнява по същия начин. Тази гъвкавост значително улеснява програмирането на MEAN-базирани приложения. Освен това, ако подготвяте проект за екип, не е нужно да търсите PHP експерт и JavaScript експерт, или специалист отпред и отзад. Вместо това всичко е JavaScript в стека.

JSON навсякъде

Angular и MongoDB говорят JSON, както и Node.js и Express. Данните се преместват добре между всички слоеве, без да се пренаписват или преформатират. Естественият формат на MySQL за отговаряне на запитвания е, разбира се, собствен. Да, PHP вече има кода за импортиране на MySQL данни и улесняване на обработката в PHP, но това не помага на клиентския слой. Това може да е малко незначително за опитни ветерани от LAMP, защото има толкова много добре тествани библиотеки, които лесно преобразуват данните, но всичко изглежда малко неефективно и объркващо. MEAN използва един и същ JSON формат за данни навсякъде, което го прави по-опростен и спестява време за преформатиране, когато преминава през всеки слой. Плюс това, повсеместността на JSON чрез стека MEAN прави работата с външни API много по-лесна: ВЗЕМЕТЕ, манипулирайте, представете, POST и съхранявайте всички с един формат.

Node.js е супер бърз

Apache беше страхотен, но в наши дни Node.js често е по-бърз. Редица бенчмаркове показват, че Node.js предлага по-добра производителност, като същевременно прави много повече. Може би това е възрастта на кода. Може би управляваната от събития архитектура Node.js е по-бърза. Няма значение. В наши дни, особено сред нетърпеливите потребители на мобилни устройства, бръсненето дори на милисекунди от производителността на вашето приложение е важно и Node.js може да го направи, като същевременно предлага пълен механизъм на Тюринг за препрограмирането му.

Дълбочината има значение

Любителите на PHP обичат да се придържат към страхотните библиотеки с код, създадени за доминиращи платформи като WordPress или Drupal. Те имат основателни причини да се гордеят, но предимствата им се изпаряват, докато Node.js наваксва.

Мениджърът на пакети Node.js, NPM, улеснява още повече споделянето на код и публичните хранилища, насочени към Node.js, се разрастват бързо. Макар че PHP тълпата може да води в този момент, бъдещето може да благоприятства Node.js. Освен това досегашните оператори често се оказват крехки пред променящите се тенденции. Всеки опит за модернизиране на утвърдена платформа като Drupal с нова версия означава, че много повече разработчици може да оставят очите си да се лутат към по-новите, по-пъргави платформи, изградени около Node.js.

Ъгловата е прясна

Не е съвсем честно да сравнявате „A“ в „MEAN“ с нищо в стека LAMP, защото LAMP не включва аналог. Ако искате да направите нещо от страна на клиента, вие сте сами. Разбира се, има много добри PHP-базирани рамки, които работят с MySQL, но всеки е малко по-различен и се движи в собствената си посока. WordPress, Joomla и Drupal, например, предлагат различни стратегии и е трудно да превключвате между тях, да не говорим за порт порт от един на друг. Помазването на една клиентска рамка добавя последователност и стабилност.

Също така помага, че Angular е създаден от хора с 20-годишен опит в изграждането на уеб приложения. Те знаеха достатъчно добре, за да оставят дизайнерската работа на HTML и CSS. Те също така измислиха как да добавят малко JavaScript за сканиране на HTML. Дизайнерите на Angular разгледаха какво правят хората добре, след което приспособиха JavaScript, за да поддържат хората. Системата за шаблони и логическите слоеве са значително по-чисти от това, което сме виждали преди, отчасти защото екипът е измислил по-прости начини да използва локалната мощ на JavaScript, за да познае какво правите.

Смесете и съчетайте

Разбира се, ако сте наистина придирчиви, няма причина да не можете да го объркате малко. Много разработчици използват MongoDB с Apache и PHP, а други предпочитат да използват MySQL с Node.js. Angular работи доста добре с всеки сървър, дори с работещ PHP, за да доставя данни от MySQL. Не е нужно да бъдете роб на съкращенията.