Поређење између Вулцан-а и АУСК-а: како користити Ноде, Реацт и ГрапхКЛ у потпуности

НРГ стог за бржи развој

Вероватно никада нисте чули ни за Вулцан.јс ни за Аполло Универсал Стартер Кит - барем не још увек.

Али прилично сам сигуран да сте чули за Реацт, Ноде.јс и ГрапхКЛ. Добро, то називамо потцењивањем: вероватно сте видели милионе твитова, чланака на блоговима, окупљања и подцастова о тој тројици и њиховим магичним моћима.

Много је добрих разлога зашто веб-програмери хвале те технологије. Ипак, ако сте икада покушали да напишете модерну ЈаваСцрипт апликацију са пуним стековима, можда сте приметили количину узорка коју може произвести.

Ово је посебно досадно код генеричких карактеристика: постављање потврде идентитета, постављање базе података, подешавање главне компоненте апликације, подешавање поставки ...

И Вулцан.јс и АУСК имају за циљ да од вас направе брз и ефикасан ЈаваСцрипт програмер са пуним стеком. Оба се ослањају на модуларну архитектуру, са Реацт за УИ, Ноде за позадину и Аполло грапхКЛ за комуникациони слој клијент / сервер. Оба обезбеђују тоне унапред кодираних модула, тако да се можете усредсредити на драгоцене карактеристике.

Међутим, сваки од њих има врло различите приступе проблему, па сам помислио да бисте могли уживати у поређењу.

Пре свега представимо такмичаре.

Изјава о одрицању одговорности: Ја сам сарадник Вулцан.јс-а, међутим, обе те технологије користио сам за пројекте својих клијената, тако да ћу остати што објективнији.

Аполло УНИВЕРСАЛ Стартер Кит

У реду, кад кажу универзални, мисле на УНИВЕРЗАЛНИ. Да ли сте икада видели ЈаваСцрипт образац који укључује Сцала сервер за велики посао? И комплетна Реацт Нативе поставка уз Екпо? Они чак затварају вечну (и досадну) расправу Угао наспрам реакције подржавајући обоје.

Немам много тога да кажем. Мислим, погледајте поново овај стог, то је најлуђи сан веб програмера!

Заправо имам нешто да додам: такође укључује Боотстрап и Ант Десигн као оквире за обликовање, Кнек за повезивање са СКЛ базом података (МонгоДБ веза није укључена, али је лако изведива) и написан је у ТипеСцрипт-у. Све основне карактеристике ЈС / ГрапхКЛ апликације дате су у шаблону (мени, ауторска права итд.) + Неколико модула вишег нивоа који служе као примери.

Линк: //гитхуб.цом/сисгеарс/аполло-универсал-стартер-кит

Вулкан: изван универзалног, изоморфан

Сећате ли се Метеора и телескопа? Знам да се ЈС екосустав брзо креће, али ово златно доба било је пре само 2 или 3 године.

Метеор је био први оквир који је у потпуности искористио комбинацију ЈаваСцрипт-а на страни сервера и клијента, омогућавајући писање изоморфног кода који ради у оба окружења. Телескоп је био Метеор-ова шаблонска апликација намењена да у потпуности ужива у својој пакетно оријентисаној архитектури.

Иако се и даље користи у многим професионалним апликацијама и познат од стране многих програмера, Метеор је осакаћен неким техничким ограничењима која спречавају ширу употребу: системом компатибилне са вебпацк-ом, управљачем пакета који је сада надмашен од НПМ-а или РАМ-а. трошећи протокол за размену података у реалном времену.

И тек треба да откријем оквир који чини развојне програмере упола продуктивнијим од Метеора. Али не брините, сада постоји озбиљан кандидат. Схваташ: Вулкан!

Коришћење Аполло ГрапхКЛ-а и рационална архитектура оријентисана на пакет омогућавају Вулцану да превазиђе Метеор-ова ограничења уживајући исте предности: потпуно модуларна архитектура, декларативно програмирање, изоморфизам и тако даље.

Вулкан је замишљен као шина ЈаваСцрипт екосистема. Лако започети, али довољно потпун за писање било које апликације.

У мом претходном чланку потражите потпунији опис Вулканских образаца који циљају брзину развоја.

Линк: //вулцањс.орг/

# 1: Фрамеворк ВС Боилерплате

Прва главна разлика између ових алата: АУСК је котловска плоча, док је Вулцан оквир. Можда се питате где лежи разлика?

Вулкан, оквир

Оквир има за циљ да вас свакодневно чини ефикаснијим програмером пружајући одређени скуп функција и помагача. Обично је дизајниран да остане одвојен од ваше апликације. С времена на време можете ажурирати своју апликацију кад год се објави нова верзија оквира.

Обично разликујемо оквире и библиотеке на основу нивоа специјализације. Оквир обично омогућава испоруку карактеристика на пословном нивоу, док је библиотека специјализованији технички алат. Али обоје углавном раде исто.

Ограничење оквира или удова је да се можете осећати изгубљено кад вас напусте. Шта радите када грешка није у вашој апликацији, већ у Реацт-у или Аполло-у?

Моје основно правило је да када користите оквир, треба да будете спремни да допринесете његовом развоју, барем тако што ћете отворити проблеме кад год наиђете на грешку.

АУСК, бојлер

Узорак је добро написан део кода са потпуно радним развојним окружењем. То је све. С узорком је теже пратити ажурирања јер код узорка није јасно одвојен од ваше апликације. Отприлике као Цреате Реацт Апп након што избаците.

Обично пружа само неколико прилагођених метода. Првих месец дана осећаћете се брже и имаћете користи од архитектуре тестиране у биткама, али на крају ће ваша брзина крстарења бити углавном иста као без бојледа.

Котловска плоча је далеко већа слобода од оквира, али и мањи утицај на вашу ефикасност.

# 2 Крива учења

Вулцан: ГрапхКЛ олакшан

Вулцан може бити добар начин да прво схватите ГрапхКЛ, јер ... заправо не морате писати ГрапхКЛ. Оквир генерише ГрапхКЛ шему и решаваче за вас на основу вашег модела података. Користећи алате за програмере као што су ГрапхиКЛ или ГрапхКЛ Воиагер, можете визуализовати и поиграти се са шемом да бисте стекли увид у то како се ваше функције преводе у ГрапхКЛ.

Други корак је разумевање логике самог Вулкана. Водич уживо укључен је у апликацију „Вулцан Стартер“ да би вам помогао у процесу.

АУСК: за пуристе

АУСК архитектура је далеко ближа ономе на шта су програмери Екпресс навикли. Замислите своју канонску Екпресс апликацију, али са инсталираним ГрапхКЛ-ом и архитектуром заснованом на пакетима. Без изненађења.

То такође значи да ћете морати да схватите основе ГрапхКЛ-а да бисте користили АУСК, поред Ноде, Екпресс и Реацт и било које базе података коју користите (али исто важи и за Вулцан). Срећом, нуди неколико примера који ће вам помоћи у процесу, укључујући стварање и навођење података, па чак и отпремање датотека.

Закључак: Фулл-стацк програмери морају пуно тога да савладају

ЈаваСцрипт екосистем сазрева све више и више, што такође значи да је теже научити и разумети почетнике.

Да бисте у потпуности уживали у тим технологијама, требаће вам барем мало знања о савременом развоју ЈаваСцрипт-а и Реацт-а.

Не очекујте да ћете првог дана бити потпуно продуктивни. Имајући у виду да постоји читав низ бесплатних или бесплатних курсева за учење модерног фулл-стацк ЈаваСцрипт развоја. Проучавање АУСК-а и Вулцана може бити невероватан извор инспирације.

# 3 Брзина развоја

Вулкан: аутоматизујте све ствари

Када се добро користи, Вулцан је невероватно брз у пружању карактеристика. То је зато што се много ослања на аутоматизовану генерацију, тако да може да произведе најрелевантније делове апликације за неколико сати све док је ваш модел података тачно дефинисан.

Овај образац се назива декларативно програмирање: ви „изјављујете“ како ваша апликација ради и препуштате оквиру да обави посао. Тешко је применити, али може бити изузетно моћно.

АУСК: више слободе

Будући да је АУСК усредсређен на додир, мало је теже додати основне карактеристике јер је то поступак у више корака:

  • напишите своју ГрапхКЛ шему
  • исто за решаваче, мутације
  • исто за ваш модел базе података (користећи Кнек или Монгоосе)
  • исто за ваше Реацт компоненте

Међутим,ако требате да напишете прилагођену функцију, биће лакше са АУСК-ом него са Вулцаном. Дакле, ако имате врло мало модела података, али сложене функције, АУСК ће бити ефикаснији од Вулцана.

Надамо се да се континуирано ради на томе да АУСК постане декларативнији, путем иновативног система шема надахнутог дизајном домена, домена-шема.

Закључак: изаберите прави алат за прави случај употребе

Не постоји магична универзална технологија за ЈС развој у пуном слогу. Брзина развоја сваког оквира у великој мери зависи од основног случаја употребе. Ја више волим Вулцан за платформе оријентисане на податке и професионалне алате, а АУСК за Б2Ц СааС платформе које захтевају више прилагођених карактеристика.

# 4 Заједница, подршка и зрелост

Вулкан: наследник Метеора

Вулцан је оквир од Сацха Греифа, који је дугогодишњи Метеор програмер и веома је уложио у ЈаваСцрипт заједницу (између осталог и држава ЈС и држава ЦСС).

Постоји активан Слацк где почетници и други ентузијасти могу брзо пронаћи одговоре на своја питања.

АУСК: пројекат који се активно одржава

АУСК одржава СисГеарс, посебно Вицтор Власенко, оснивач компаније.

Пројекат је повезан са Гиттер-ом. Током моје најновије слободне мисије са АУСК-ом, Виктор је врло брзо одговорио на моја питања и питања. Чак је спојио подршку за Сторибоок након што сам покушао.

Закључак: мале, али богате заједнице

Обе технологије се користе у производњи у више пројеката, тако да су већ безбедне за употребу. Заједнице се активно развијају и прилагођене почетницима.

Ако треба да створите тим, немојте очекивати да ћете наћи слободњаке који тачно познају те технологије, превише су специфични. Уместо тога, фокусирајте се на проналажење програмера ЈаваСцрипт-а који ће моћи брзо да их науче. Можете и да одете до извора и да пронађете праве стручњаке међу заједницама Вулкан или АУСК.

# 5 Примена

Није много за упоређивање, оба оквира омогућавају примену на платформама које нуде бесплатне услуге попут Зеит Нов и Хероку, као и примену на вашем прилагођеном серверу.

# 6 Скалабилност кода и модуларни обрасци

Вулкан: поделите напоре

Једна од предности оквира је подјела напора. Крајња употреба је јаснија и тиме нам омогућава да интегришемо различите оптимизације у сам оквир.

Вулцан нуди обрасце попут повратних позива / кука, побољшања и централне регистрације како би у потпуности искористио своју архитектуру оријентисану на пакет. На пример, у могућности смо да додамо УИ материјала у апликацију, укључујући ССР, без промене једне линије кода у модулу Вулцан Цоре.

Тачније, Вулцан пружа различите registerметоде за сваку структуру података, на пример registerComponent, као и повратне позиве, попут router.wrapperоних који омогућавају умотавање коренске Appкомпоненте Реацт. Требате увести датотеку само једном на нивоу уноса пакета ( mainдатотеке).

АУСК: започните правим путем, завршите сами

Модуларна архитектура ограничава искушење писања шпагети кода. Фаворизира поновну употребу кода у свим апликацијама. Сваки пакет поседује index.tsдатотеку која декларише релевантне посредничке програме, функције покретања, функције ГрапхКЛ које се деле са другим модулима.

Добро именовани moduleмодул пружа класе за свако окружење за регистрацију новог модула, попут ServerModuleи ClientModule. То је једини модул који се заправо користи директно на нивоу апликације.

 export default new ServerModule({ onAppCreate: [ callback1, callback2] }) 

Интерно ће се сви модули спојити у један велики модул, који ће на крају бити коришћен за креирање апликације. На пример, сви onAppCreateповратни позиви ће се изводити један за другим.

То је релативно чист образац и врло паметна архитектура. Мислим, чак је и менаџер модула модул, зар то није лепо?

Али остало је на вама. Лепо, моћи ћете све да оптимизујете! Па, хоћете ли изгубити пар својих ГрапхКЛ резолутора и ваше Монго базе података? Помоћу којих алата? Како претворити своју ГрапхКЛ шему у Монго пројекције? Да ли ћете писати конекторе, користити ДатаЛоадер?

Ево у чему је поента: писање скалабилне апликације је тешко. Веома тешко. Ако желите да учите, онда добро за вас. Веома ми је драго што користим АУСК управо из овог разлога, јер радите ствари сами најбољи је начин за учење.

Закључак: да ли сте несклони ризику?

И за АУСК и за Вулцан скалабилност кода значи модуларну архитектуру. Кад год код постане превише сложен или нечитљив, решење је лако: исеците га на мање једноставније делове.

Вулканска архитектура је смелија, све може бити модуларно. Ова амбиција ризикује, понекад је тешко добити ко је шта и када регистровао.

АУСК модуларни обрасци су лакши за читање, али и нешто мање моћни. На пример, може бити тешко додати сложене глобалне функције без додиривања основног кода пакета. Ипак, они су дефинитивно довољни за већину случајева употребе, не морате бити пуриста модуларности да бисте писали добре апликације.

# 6 Мобилни

Вулкан: са Кордовом

Метеор, на коме је Вулкан заснован, уграђује Кордову. Тако се ваша веб апликација може повезати као мобилна апликација са једном командном линијом.

Међутим, Вулцан не нуди алате за матичне апликације. Наравно да и даље можете створити независну Реацт Нативе апликацију и прикључити је на Вулцан. Побољшања система ауторизације (тренутно последњи комад Вулкана који се заиста ослања на Метеор) планирају се у наредним месецима како би се олакшале такве везе.

АУСК: са Реацт Нативе-ом

Комбиновање поставки за „ванилин“ Реацт и Реацт Нативе једна је од најбољих карактеристика АУСК-а. На крају крајева, то је Универзални почетни комплет! Ни сам не радим пуно на мобилним уређајима, али је охрабрујуће што могу брзо створити матичну мобилну апликацију која дели исти сервер као и мој веб интерфејс.

Закључак: АУСК је бољи код мобилних уређаја

АУСК ће бити прикладнији ако посебно треба да напишете мобилну апликацију. Без обзира на то, Вулцан дозвољава да из свог кода направите мобилну апликацију у само једној командној линији, што је у реду ако вам је мобилна верзија секундарнија.

# 7 Промена корисничког интерфејса: тежак проблем

Стварање фуллстацк оквира који омогућава тренутну промену УИ библиотеке је сан постигнут само током ере ЦСС-а. Сећате се оних веб локација које су дозвољавале пребацивање теме кликом на једно дугме?

Тада су напали народи ЈС. Коришћењем Реацт компоненти врло је тешко обезбедити такву функцију (осим тривијалних промена боје), јер су стил и дизајн сада веома повезани са основним компонентама Реацт / Ангулар / Вуе.

Свака библиотека Реацт УИ има свој начин да дефинише дугме, чак и не говорећи о теми. То је проблем за фулл-стацк технологије као што су АУСК и Вулцан, јер је одабир оквира за стил ствар укуса. Они не могу само да предложе коначан избор и приморају вас да га се придржавате. Боотстрап више није монопол и сваки програмер има свој омиљени либ.

Да би се позабавили овим питањем, обојица имају сличан приступ. Написали су канонски скуп компоненти помоћу Боотстрапа, а затим су покушали да дозволе замену тих компонената другим либом попут Ант Десигн или Материал УИ.

То чини код чудним. На пример, АУСК дугме ће узети colorослонац, јер тако функционише Боотстрап. Ако се пребаците на Ант Десигн, мораћете да користите и реквизит у боји, чак и ако Ант Десигн typeуместо тога користи реквизит.

Будући да се избор УИ оквира обично дешава само једном, обавеза да се користи неканонски скуп реквизита током свих дешавања чини се веома високом ценом за подршку вишеструког УИ оквира.

Током развоја, предложио бих да што више избегавате употребу тих претходно кодираних компоненти за прилагођени кориснички интерфејс. Они су у реду да направе примере и генеричке карактеристике које пружа шаблон / оквир, али не толико када је у питању писање прилагођених делова ваше апликације.

Уместо тога, користите основне компоненте које пружа Ант Десигн или Боотстрап или Материал УИ у зависности од вашег избора, и покушајте да напишете сопствену УИ либ. Можете да наручите Сторибоок да вам помогне у процесу, јер је укључен и у АУСК и у Вулцан.

# 8 БЕСПЛАТНА БОРБА

Ако бих задржао карактеристике за разликовање специфичне за сваку од ових технологија, то би биле ове.

Вулкан

Систем шема. Колико ми је познато, ниједан оквир није у стању да генерише структуру базе података, тачке улаза на серверу, комуникациони слој клијент / сервер и интерфејс спреман за производњу (обрасци, листе итд.) Из једне ЈСОН шеме.

Вулцан.јс то може учинити користећи најновије ЈС технологије.

АУСК

Нисам успео да изаберем само један, тако да би моје омиљене карактеристике АУСК-а биле ТипеСцрипт и Реацт Нативе.

Неколико година се воде расправе о предностима статички куцаног ЈаваСцрипт-а, да ли се више воли Флов или ТипеСцрипт ... И ТипеСцрипт је дефинитивно победио у борби. Рад са ТипеСцрипт-ом је могућ у Вулцан-у, али због употребе Метеора тренутно се осећа неприродно, а компајлирање је споро. АУСК користи ТипеСцрипт као подразумевану вредност и то је сјајно.

И Реацт Нативе ... па, постоје ирасправља да ли је коришћење Реацт-а за писање мобилних апликација релевантно. Можете се одлучити да се придржавате прилагодљиве веб апликације, али бар знате да је све постављено за вас, с обзиром на то да конфигурисање развојног програма за Реацт Нативе није увек лак задатак.

Па, јесте ли изабрали?

Постоји толико пуно тачака које би требало узети у обзир, попут перформанси, сигурности, ДевОпс-а, ​​управљања ауторизацијом ... Одабир правог алата за израду ЈаваСцрипт апликације сигурно није лак избор. Надам се да вам је овај чланак пружио драгоцене увиде који ће вам помоћи у овој одлуци.

Ако се и даље осећате неодлучно, јавите ми се на Вулцан'с Слацк, било би ми драго да им одговорим :)

Такође можете упутити било које питање на АУСК-у Виктору Власенку и његовом тиму на СисГеарс-у, и придружити се Вулцановом наменском Слацку за приступ заједници Вулцан.

Последњи мој савет биће тако једноставан: покушајте и Вулцан и АУСК, вреди вашег времена!

Хвала Сацха Греифу и Вицтор Власенко на рецензији овог чланка.

ЛБКЕ банер твиттер

Суоснивач сам француске компаније Лебрун Бурел Кновледге Енгинееринг (ЛБКЕ) - //ввв.лбке.фр

Увек радо разговарамо о коду, машинском учењу, иновацијама и предузетништву!