Ниједан ЈаваСцрипт оквир није креиран током писања овог чланка.
Следеће је инспирисано чланком „То је будућност“ из Цирцле ЦИ. Оригинал можете прочитати овде . Овај део је само мишљење, и као и сваки ЈаваСцрипт оквир, не треба га схватати превише озбиљно.
Хеј, добио сам овај нови веб пројекат, али да будем искрен, нисам кодирао много веба неколико година и чуо сам да се пејзаж мало променио. Ви сте најсавременији веб девелопер овде, зар не?
-Прави израз је Фронт Енд инжењер, али да, ја сам прави момак. Радим на вебу у 2016. Визуализације, музички плејери, летећи дронови који играју фудбал, свеједно. Управо сам се вратио са ЈсЦонф-а и РеацтЦонф-а, тако да знам најновије технологије за креирање веб апликација.
Цоол. Морам да направим страницу која приказује најновију активност корисника, тако да само треба да добијем податке са РЕСТ крајње тачке и прикажем их у некој врсти табеле која се може филтрирати, и ажурирати је ако се нешто промени на серверу. Размишљао сам да можда користим јКуери за преузимање и приказ података?
-О мој Боже, не, нико више не користи јКуери. Требало би да покушате да научите Реацт, 2016. је.
Ох, ОК. Шта је Реацт?
-То је супер кул библиотека коју су направили неки момци на Фацебоок-у, она заиста доноси контролу и перформансе вашој апликацији, омогућавајући вам да врло лако управљате свим променама погледа.
То звучи уредно. Могу ли да користим Реацт за приказ података са сервера?
-Да, али прво морате да додате Реацт и Реацт ДОМ као библиотеку на своју веб страницу.
Чекај, зашто две библиотеке?
- Дакле, једна је стварна библиотека, а друга је за манипулисање ДОМ-ом, који сада можете описати у ЈСКС-у.
ЈСКС? Шта је ЈСКС?
-ЈСКС је само проширење ЈаваСцрипт синтаксе које прилично личи на КСМЛ. То је на неки други начин да се опише ДОМ, замислите га као бољи ХТМЛ.
Шта није у реду са ХТМЛ-ом?
-Година је 2016. Нико више не кодира директно ХТМЛ.
Тачно. У сваком случају, ако додам ове две библиотеке онда могу да користим Реацт?
-Не баш. Морате да додате Бабел, а затим можете да користите Реацт.
Друга библиотека? Шта је Бабел?
-Ох, Бабел је транспилер који вам омогућава да циљате одређене верзије ЈаваСцрипт-а, док кодирате у било којој верзији ЈаваСцрипт-а. Не МОРАТЕ да укључите Бабел да бисте користили РеацтЈС, али ако то не учините, заглавили сте са коришћењем ЕС5, и будимо реални, 2016. је, требало би да кодирате у ЕС2016+ као што то раде остала кул деца.
ЕС5? ЕС2016+? Губим се овде. Шта су ЕС5 и ЕС2016+?
-ЕС5 је скраћеница од ЕЦМАСцрипт 5. То је издање које има за циљ већину људи пошто га је имплементирала већина данашњих претраживача.
ЕЦМАСцрипт?
-Да, знате, стандард за скриптовање ЈаваСцрипт је био заснован 1999. године након његовог првобитног издавања 1995. године, тада када је ЈаваСцрипт назван Ливесцрипт и радио само у Нетсцапе Навигатору. То је тада било веома неуредно, али на срећу сада су ствари врло јасне и имамо, отприлике, 7 издања ове имплементације.
7 издања. Стварно. А ЕС5 и ЕС2016+ јесу?
-Пето и седмо издање.
Чекај, шта се десило са шестим?
-Мислиш на ЕС6? Да, мислим, свако издање је надскуп претходног, тако да ако користите ЕС2016+, користите све функције претходних верзија.
Тачно. И зашто онда користити ЕС2016+ преко ЕС6?
-Па, МОЖЕТЕ да користите ЕС6, али да бисте користили сјајне функције као што су асинхронизација и чекање, морате да користите ЕС2016+. Иначе сте заглављени са ЕС6 генераторима са корутинама за блокирање асинхроних позива за правилан ток контроле.
Немам појма шта сте управо рекли, а сва ова имена су збуњујућа. Видите, ја само учитавам гомилу података са сервера, некада сам могао само да укључим јКуери са ЦДН-а и само добијем податке помоћу АЈАКС позива, зашто то не могу да урадим?
-То је 2016. човече, нико више не користи јКуери, заврши у гомили шпагети кода. То сви знају.
Тачно. Дакле, моја алтернатива је да учитам три библиотеке за преузимање података и приказ ХТМЛ табеле.
-Па, укључујете те три библиотеке, али их спајате са менаџером модула да бисте учитали само једну датотеку.
Видим. А шта је менаџер модула?
-Дефиниција зависи од окружења, али на вебу обично мислимо на све што подржава АМД или ЦоммонЈС модуле.
Рииигхт. А АМД и ЦоммонЈС су…?
-Дефиниције. Постоје начини да се опише како више ЈаваСцрипт библиотека и класа треба да комуницирају. Знате, извози и захтева? Можете написати више ЈаваСцрипт датотека које дефинишу АМД или ЦоммонЈС АПИ и можете користити нешто попут Бровсерифи-а да их повежете.
ОК, то има смисла... Мислим. Шта је Бровсерифи?
-То је алатка која вам омогућава да групишете ЦоммонЈС описане зависности у датотеке које се могу покренути у претраживачу. Настао је зато што већина људи објављује те зависности у нпм регистру.
нпм регистри?
-То је веома велико јавно спремиште где паметни људи стављају код и зависности као модуле.
Као ЦДН?
-Не баш. То је више као централизована база података у којој свако може да објављује и преузима библиотеке, тако да их можете користити локално за развој, а затим их отпремити на ЦДН ако желите.
Ох, као Бовер!
-Да, али сада је 2016, нико више не користи Бауер.
Ох, разумем... значи онда морам да преузмем библиотеке са нпм-а?
-Да. Тако, на пример, ако желите да користите Реацт, преузимате Реацт модул и увезете га у свој код. То можете учинити за скоро сваку популарну ЈаваСцрипт библиотеку.
Ох, као Ангулар!
-Ангулар је тако 2015. Али да. Ангулар би био ту, поред ВуеЈС или РкЈС и других цоол библиотека за 2016. Желите да научите о њима?
Хајде да се држимо Реацт-а, већ сада учим превише ствари. Дакле, ако треба да користим Реацт, преузимам га са овог нпм-а, а затим користим ову ствар Бровсерифи?
-Да.
Чини се да је превише компликовано само зграбити гомилу зависности и повезати их заједно.
-То је разлог зашто користите менаџер задатака као што су Грунт или Гулп или Броццоли да аутоматизујете покретање Бровсерифи-а. Дођавола, чак можете користити и мимозу.
Грунт? Гулп? Броколи? Мимоза? О цему сад прицамо?
-Менаџери задатака. Али више нису кул. Користили смо их у 2015. години, затим смо користили Макефилес, али сада све омотамо са Вебпацк-ом.
Макефилес? Мислио сам да се то углавном користи на Ц или Ц++ пројектима.
-Да, али очигледно на вебу волимо да компликујемо ствари и да се онда вратимо на основе. То радимо сваке године, само сачекајте, за годину-две ћемо да урадимо монтажу у мрежи.
Уздах. Споменули сте нешто што се зове Вебпацк?
-То је још један менаџер модула за претраживач, а истовремено је и покретач задатака. То је као боља верзија Бровсерифи-а.
Ох, ок. Зашто је боље?
-Па, можда не и боље, само је више мишљења о томе како треба да се везују ваше зависности. Вебпацк вам омогућава да користите различите менаџере модула, а не само оне ЦоммонЈС, тако на пример модуле које подржава ЕС6.
Изузетно сам збуњен читавом овом ЦоммонЈС/ЕС6 ствари.
-Сви јесу, али не би требало више да бринете о СистемЈС-у.
Исусе Христе, друга именица-јс. Ок, а шта је ово СистемЈС?
-Па, за разлику од Бровсерифи-а и Вебпацк-а 1.к, СистемЈС је динамички учитавач модула који вам омогућава да повежете више модула у више датотека уместо да их спајате у једну велику датотеку.
Чекај, али мислио сам да желимо да изградимо наше библиотеке у једну велику датотеку и да то учитамо!
-Да, али пошто ХТТП/2 сада долази, вишеструки ХТТП захтеви су заправо бољи.
Чекај, зар не можемо само да додамо три оригиналне библиотеке за Реацт??
-Не баш. Мислим, могли бисте да их додате као спољне скрипте из ЦДН-а, али бисте и даље морали да укључите Бабел.
Уздах. И то је лоше, зар не?
-Да, укључили бисте читаво бабел-језгро, а не би било ефикасно за производњу. У продукцији морате да извршите низ предзадатака да бисте припремили свој пројекат који ће учинити да ритуал призивања Сатане изгледа као рецепт за кувана јаја. Морате да минимизирате средства, углифицирате их, уградите цсс изнад прелома, одложите скрипте, као и-
Схватио сам, схватио сам. Дакле, ако не бисте укључили библиотеке директно у ЦДН, како бисте то урадили?
-Ја бих га транспилирао из Типесцрипт-а користећи комбинацију Вебпацк + СистемЈС + Бабел.
Типесцрипт? Мислио сам да кодирамо у ЈаваСцрипт-у!
-Типесцрипт ЈЕ ЈаваСцрипт, или боље речено, надскуп ЈаваСцрипт-а, тачније ЈаваСцрипт на верзији ЕС6. Знате, она шеста верзија о којој смо раније причали?
Мислио сам да је ЕС2016+ већ суперсет ЕС6! ЗАШТО нам сада треба ова ствар која се зове Типесцрипт?
-Ох, зато што нам омогућава да користимо ЈаваСцрипт као куцани језик и смањимо грешке током извршавања. 2016. је, требало би да додате неке типове свом ЈаваСцрипт коду.
А Типесцрипт то очигледно ради.
-Флов такође, иако проверава само куцање док је Типесцрипт надскуп ЈаваСцрипт-а који треба да се компајлира.
Уздах… а Флов је?
-То је статичка провера типа коју су направили неки момци на Фејсбуку. Кодирали су га у ОЦамл, јер је функционално програмирање сјајно.
ОЦамл? Функционално програмирање?
-То је оно што кул деца користе данас човече, знаш, 2016? Функционално програмирање? Функције високог реда? Цурриинг? Чисте функције?
Немам појма шта си управо рекао.
-Нико не ради на почетку. Гледајте, само треба да знате да је функционално програмирање боље од ООП-а и то је оно што би требало да користимо у 2016.
Чекај, научио сам ООП на колеџу, мислио сам да је то добро?
-Као и Јава пре него што ју је купио Орацле. Мислим, ООП је био добар у данима, и још увек има своју употребу данас, али сада сви схватају да је модификовање стања еквивалентно шутирању беба, тако да сада сви прелазе на непроменљиве објекте и функционално програмирање. Момци са Хаскела су то звали годинама, -и немојте ме повлачити са Елм момцима - али срећом на вебу сада имамо библиотеке попут Рамде које нам омогућавају да користимо функционално програмирање у обичном ЈаваСцрипт-у.
Да ли само избацујете имена због тога? Шта је дођавола Рамнда?
-Не. Рамда. Као Ламбда. Знате ону библиотеку Давид Цхамберса?
Давид који?
-Давид Цхамберс. Цоол момак. Игра злобну игру Државног удара. Један од сарадника за Рамду. Такође би требало да проверите Ерика Меијера ако озбиљно желите да научите функционално програмирање.
А Ерик Меијер је…?
-И тип за функционално програмирање. Сјајан момак. Има гомилу презентација у којима уништава Агиле док користи ову чудну кошуљу у боји. Такође би требало да проверите неке ствари од Тј, Јасха Кенаса, Синдре Сорхус, Паул Ирисх, Адди Османи-
Ок. Ту ћу те зауставити. Све је то добро и фино, али мислим да је све то тако компликовано и непотребно за само преузимање података и њихово приказивање. Прилично сам сигуран да не морам да познајем ове људе нити да учим све те ствари да бих направио табелу са динамичким подацима. Вратимо се на Реацт. Како могу да преузмем податке са сервера помоћу Реацт-а?
-Па, ви заправо не преузимате податке помоћу Реацт-а, већ само приказујете податке помоћу Реацт-а.
Ох, проклет био. Дакле, шта користите за преузимање података?
-Дохвати користите за преузимање података са сервера.
извини? Користите Фетцх за преузимање података? Ко год да именује те ствари, потребан му је тезаурус.
-Знам зар не? Дохвати то име матичне имплементације за извођење КСМЛХттпРекуестс-а на серверу.
Ох, тако АЈАКС.
-АЈАКС је само употреба КСМЛХттпРекуестс-а. Али сигурно. Фетцх вам омогућава да урадите АЈАКС заснован на обећањима, које онда можете решити да бисте избегли пакао повратног позива.
Пакао повратног позива?
-Да. Сваки пут када извршите асинхрони захтев против сервера, морате да сачекате његов одговор, што вас онда тера да додате функцију унутар функције, која се зове пирамида повратног позива из пакла.
Ох, ок. И ово обећање то решава?
-Заиста. Манипулишући повратним позивима кроз обећања, можете писати лакши за разумевање кода, исмијавати их и тестирати их, као и извршавати симултане захтеве одједном и чекати док се сви не учитају.
И то се може урадити са Фетцх-ом?
-Да, али само ако ваш корисник користи евергреен претраживач, у супротном треба да укључите Фетцх полифилл или користите Рекуест, Блуебирд или Акиос.
Колико библиотека треба да знам за име Бога? Колико их је?
-То је ЈаваСцрипт. Мора да постоје хиљаде библиотека које све раде исту ствар. Знамо библиотеке, у ствари, имамо најбоље библиотеке. Наше библиотеке су огромне и понекад у њих убацимо слике Гаја Фиерија.
Да ли си управо рекао Гуи Фиери? Хајде да завршимо са овим. Шта раде ове библиотеке Блуебирд, Рекуест, Акиос?
-То су библиотеке за извршавање КСМЛХттпРекуестс-а који враћају обећања.
Није ли јКуери-јев АЈАКС метод такође почео да враћа обећања?
-Више не користимо реч „Ј“ у 2016. години. Само користите Фетцх и полифилујте га када није у претраживачу или уместо тога користите Блуебирд, Рекуест или Акиос. Затим управљајте обећањем са аваит у оквиру асинхронизоване функције и бум, имате исправан ток контроле.
То је трећи пут да помињете чекање, али немам појма шта је то.
-Аваит вам омогућава да блокирате асинхрони позив, омогућавајући вам бољу контролу над тим када се подаци преузимају и свеукупно повећавајући читљивост кода. Сјајно је, само треба да се уверите да сте у Бабел-у додали унапред подешену фазу 3 или да користите синтаксе-асинхне функције и додатак за трансформацију асинц-то-генератор.
Ово је лудо.
-Не, сулуда је чињеница да морате унапред компајлирати Типесцрипт код, а затим га транспилирати помоћу Бабел-а да бисте користили аваит.
Шта? Није укључен у Типесцрипт?
-У следећој верзији има, али од верзије 1.7 циља само на ЕС6, тако да ако желите да користите аваит у претраживачу, прво морате да компајлирате свој Типесцрипт код који циља ЕС6, а затим Бабел то срање да циља ЕС5.
У овом тренутку не знам шта да кажем.
-Види, лако је. Кодирајте све у Типесцрипт-у. Сви модули који користе Фетцх их компајлирају да циљају ЕС6, транспилирају их помоћу Бабел-а на претходно постављеној фази 3 и учитавају их помоћу СистемЈС-а. Ако немате Фетцх, полифилујте га или користите Блуебирд, Рекуест или Акиос и обрадите сва своја обећања са аваит.
Имамо веома различите дефиниције лаког. Дакле, са тим ритуалом сам коначно преузео податке и сада могу да их прикажем помоћу Реацт-а, зар не?
-Да ли ће ваша апликација обрађивати било какве промене стања?
Ерр, мислим да није. Само треба да прикажем податке.
-Ох, хвала Богу. Иначе бих морао да вам објасним Флук и имплементације као што су Флуммок, Алт, Флукибле. Иако да будем искрен, требало би да користите Редук.
Само ћу прелетети та имена. Опет, само треба да прикажем податке.
-Ох, ако само приказујете податке, није вам требао Реацт за почетак. Био би у реду са шаблоном.
Зезаш ме? Мислите да је ово смешно? Да ли се тако понашате према својим вољенима?
-Само сам објашњавао шта би ти могло користити.
Стани. Само престани.
-Мислим, чак и ако користи само шаблонски механизам, и даље бих користио комбинацију Типесцрипт + СистемЈС + Бабел да сам на твом месту.
Морам да прикажем податке на страници, а не да изведем Суб Зероов оригинални МК фаталити. Само ми реци који механизам за шаблоне да користим и ја ћу то преузети одатле.
-Има много, који вам је познат?
Уф, не могу да се сетим имена. Било је то давно.
-јШаблони? јКоте? ПУРЕ?
Ерр, не звони. Још један?
-Транспарентност? ЈСРендер? МаркупЈС? КноцкоутЈС? Тај је имао двосмерно везивање.
Још један?
-ПлатесЈС? јКуери-тмпл? Управљачи? Неки људи га још увек користе.
Можда. Има ли сличних овом последњем?
-Бркови, подвлака? Мислим да сада чак и лодасх има један да будем искрен, али то је нека врста 2014.
Ерр.. можда је било новије.
-Јаде? ДустЈС?
бр.
-ДотЈС? ЕЈС?
бр.
-Нуњуцкс? ЕЦТ?
бр.
-Ма, ионако нико не воли Цоффеесцрипт синтаксу. Јаде?
Не, већ си рекао Јаде.
- Мислио сам на Мопса. Мислио сам на Јаде. Мислим, Јаде је сада Мопс.
Уздах. Не. Не могу да се сетим. Који бисте користили?
-Вероватно само ЕС6 изворни низови шаблона.
Да погодим. А то захтева ЕС6.
-Тачно.
Који, у зависности од тога који претраживач који користим, треба Бабел.
-Тачно.
Коју, ако желим да укључим без додавања целе основне библиотеке, морам да је учитам као модул из нпм-а.
-Тачно.
За шта је потребан Бровсерифи, или Вепбацк, или највероватније она друга ствар која се зове СистемЈС.
-Тачно.
Којим, осим ако није Вебпацк, идеално би требало да управља покретач задатака.
-Тачно.
Али, пошто би требало да користим функционално програмирање и куцане језике, прво морам да унапред компајлирам Типесцрипт или да додам ову Флов ствар.
-Тачно.
И онда то пошаљи у Бабел ако желим да користим чекање.
-Тачно.
Тако да онда могу да користим Фетцх, обећања и контролу тока и сву ту магију.
-Само не заборавите да полифилл Фетцх ако није подржан, Сафари још увек не може да се носи са тим.
Знаш шта. Мислим да смо завршили овде. У ствари, мислим да сам завршио. Завршио сам са вебом, завршио сам са ЈаваСцриптом.
-У реду је, за неколико година ћемо сви кодирати у Елм-у или ВебАссембли-у.
Само ћу се вратити на позадину. Једноставно не могу да поднесем ове многе измене и верзије и издања и компајлере и транспилере. ЈаваСцрипт заједница је луда ако мисли да неко може да прати ово.
-Чујем те. Онда би требало да испробате Питхон заједницу.
Зашто?
- Да ли сте икада чули за Питхон 3?
Ажурирање: Хвала што сте указали на грешке у куцању и грешке, ажурираћу чланак како је наведено. Дискусија у ХацкерНевс- у и Реддиту .