Струва ли си да научите ванилия JavaScript? Абсолютно.

Целта на тази публикация е да подчертае значението на основите на JavaScript за всеки разработчик от предния край. Ще ви кажа защо трябва да познавате добре чистия (ванилов) JavaScript. Това означава JavaScript без никакви допълнителни рамки или библиотеки.

Ще спомена и няколко ресурси, които ми помогнаха да науча тези основи.

Друга причина зад тази публикация е, че много амбициозни уеб разработчици са склонни да пропускат изучаването на основните JavaScript концепции като издигане, затваряне или прототипи. Те отиват направо към най-горещите рамки като React или Angular 2. Ще ви покажа защо този подход не е най-удобният.

Всеки иска разработчици със знания за $ {addTheHotFramework} ...

И така, има ли причина, поради която да се притеснявате да изучавате Vanilla JavaScript?

Трудно е да станеш силен разработчик, без да знаеш ядрото на самия език. Точно както трябва да разберете основните принципи на закона, преди да можете да преминете в определена област на правото. Това сравнение е чисто случайно. ?

Разбирам, че по-голямата част от амбициозните уеб разработчици искат да бъдат наети възможно най-скоро. И аз исках и това.

Изглежда много по-лесно да направите курс за срив на основите на JavaScript, да влезете в някаква фантастична рамка, да направите списък със задачи (нека кученце умре), да го качите в GitHub и след това да започнете да търсите работа.

... но инвестирането на време във Vanilla JavaScript ще се изплати в дългосрочен план

Не ме разбирайте погрешно тук. По никакъв начин не съм пристрастен към JavaScript рамките. Точно обратното. Много от тях ви помагат да напишете по-четлив и поддържаем код. Те ви позволяват да пишете по-абстрактен код, който често е по-лесен за отстраняване на грешки.

Но екосистемата на JavaScript се развива доста бързо. Създават се нови рамки. Към съществуващите се добавят нови функционалности. И най-важното е, че много от най-горещите рамки днес ще бъдат заменени, като Angular 1.

При такива обстоятелства все още ли смятате, че познаването на конкретна рамка на JavaScript е достатъчно за уеб разработчик?

Или е по-добре да разберете как езикът, на който се базират всички тези библиотеки и рамки, работи под капака?

Ако притежавате солидни познания по основи на JavaScript,единственото нещо, с което трябва да се запознаете, когато започнете да работите с нова рамка, е нейният синтаксис . Основните правила ще бъдат същите, тъй като при всички слоеве на абстракции. Все още е само обикновен стар JavaScript.

Ако знанията ви са ограничени само до една рамка на JavaScript, трудно ще научите нова. Различните рамки често се основават на различен набор от принципи на JavaScript. В дългосрочен план ще отделите повече време в опити да разберете различни рамки и отстраняване на грешки в кода, който пишете в тях.

Всички JavaScript рамки и библиотеки неизбежно се основават на ядрото на Vanilla.

Това трябва да убеди всеки, че познаването на чист JavaScript е задължително в дългосрочен план. Това е предпоставка за всеки успешен разработчик, особено за такъв, който работи основно в екосистемата на JavaScript.

Личен опит

Не много отдавна се обърнах към пътуването си от адвокат до уеб разработчик. Вече изминаха 18 месеца, откакто написах първата си функция на JavaScript и 10-ия си месец, работещ като професионален разработчик на преден край.

Все още помня колко предизвикателно беше за мен да открия правилния начин на изучаване на JavaScript, тъй като нямах предишен опит в програмирането. Опитах (и все още се опитвам) много различни начини да стана ефективен обучаем. Някои от тях бяха по-полезни, други по-малко.

Най-важното е, че не мога да подчертая достатъчно, колко полезно за мен беше, че поставих акцент върху изучаването на чист JavaScript от началото. Рамките дойдоха по-късно.

В момента работя със стека React-Redux. Въпреки това често се сблъсквам с проблем, който мога да реша благодарение на моите познания за Vanilla JavaScript. Тези грешки биха били много по-предизвикателни за решаване само със знанието на определена рамка.

Learning React или Angular 2 няма да ви научат, че обектите се предават чрез препратка или как работи затварянето. Опитът да се разберат тези концепции под абстракциите, внесени от рамката, е много по-труден. Това прави по-трудни за разбиране прости концепции на JavaScript.

Освен това, ако работите с JSX (React, Vue, Inferno) или TypeScript (Angular 2), имате още един слой абстракция върху него.

Ако искате да разберете как тези рамки работят под капака, първо трябва да знаете как работи самият JavaScript.

Можете да проверите знанията си за чист JavaScript, като прочетете изходния код на любимата си рамка.Това не само ще ви даде представа за това как работи под капака, но и ще ви научи много за неговата логика, която можете да използвате в собствения си код. Ще видите, че функциите на рамката, които изглежда правят много магия във вашето приложение, са просто композиции от основни концепции на JavaScript.

Дайте ми нещо, от което мога да се уча

Въпросът, който може би си задавате сега, е „Кои са някои добри ресурси, които могат да ми помогнат да придобия прилични познания за Vanilla JavaScript?“.

Има тонове курсове и книги за JavaScript и неговите рамки. И все пак малко от тях имат за цел да ви научат на ванилия JavaScript по изчерпателен начин. Повечето от тях са специализирани за определена JavaScript технология.

Но все пак има някои добри ...

Красноречивият JavaScript ще ви научи не само на основите на JavaScript, но и на основите на програмирането като цяло. Ако вече сте напреднал разработчик, тази книга ще ви даде нова перспектива за JavaScript и основните му принципи.

Друг чудесен ресурс е книжната поредица You Don't Know JavaScript (YDKJS) от Кайл Симпсън. Кайл наистина знае как да преподава. Обясненията му за усъвършенствани концепции на JavaScript са удобни за начинаещи и той ги обхваща задълбочено. Самите заглавия на книгите ще ви дадат намек за това, което ще научите. „Up & Going“, „Scope & Closures“, „this & Object Prototypes“, „Types & Grammar“, „Async & Performance“, „ES6 & Beyond“. Има и нова 7-ма книга за функционалното програмиране в JavaScript.

Едно от страхотните неща за Eloquent JavaScript и YDKJS е, че можете да ги получите безплатно (проверете предоставените връзки). Но ако наистина ги намирате за полезни, не забравяйте да подкрепите авторите, като ги купувате.

Ако сте по-скоро видеоклип, можете да гледате онлайн курсовете на Кайл. Предполагам, че най-доброто, което можете да направите, е да ги гледате като спътник на книгите му, тъй като темите са едни и същи. Тези курсове обаче са платени.

Друг видео курс, който намирам за полезен, е Javascript: Разбиране на странните части от Антъни Алисея. Той обяснява какво се случва под капака на JavaScript по достъпен начин. Той обхваща усъвършенствани концепции като прототипно наследяване, функционално програмиране и вериги на обхвата.

Научете сега ванилов JavaScript

Ако инвестирате ценното си време в изучаването на Vanilla JavaScript, няма да съжалявате. Той не само съдържа думата ванилия , но ще окаже благоприятно влияние върху уменията за програмиране.

За мен най-добрият компромис е, че изучаването на чист JavaScript ще ви даде много повече в дългосрочен план, отколкото да инвестирате време в определена рамка. Рамките са просто преки пътища. Под капака е всичко JavaScript.

Ще се убедите сами в ситуация, в която рамка, която използвате, има някакво неочаквано поведение. В такъв случай ще бъдете принудени да разследвате тази грешка, като прегледате изходния код. Споменах ли, че въпреки че на много рамки липсва достойна документация, те имат доста сложен код? Хей, парче торта, нали? Със сигурност вече сте прекарали много време в изучаване на Vanilla JavaScript. Или още не?

Трябва ли да помните само едно нещо от този пост:

Винаги имайте предвид, че познаването на Vanilla JavaScript ще ви помогне да станете много по-добър разработчик. Период.

Ако тази статия ви е харесала, дайте й няколко пляскания. Много бих го оценил.

Тази публикация първоначално беше публикувана в моя блог.

Ще се видим в Twitter?

Дейвид Копал (@coding_lawyer) | Twitter

Най-новите туитове от Дейвид Копал (@coding_lawyer). разработчик отпред @ataccama | бивш адвокат | блогър ... twitter.com