Er Vanilla JavaScript værd at lære? Absolut.

Formålet med dette indlæg er at understrege vigtigheden af ​​JavaScript-grundlæggende for enhver front-end-udvikler. Jeg vil fortælle dig, hvorfor du skal have et godt kendskab til ren (vanilje) JavaScript. Dette betyder JavaScript uden yderligere rammer eller biblioteker.

Jeg nævner også et par ressourcer, der hjalp mig med at lære disse grundlæggende.

En anden grund bag dette indlæg er, at mange håbende webudviklere har tendens til at springe indlæring af centrale JavaScript-koncepter som hejsning, lukninger eller prototyper. De går direkte til de hotteste rammer som React eller Angular 2. Jeg viser dig, hvorfor denne tilgang ikke er den mest bekvemme.

Alle vil have udviklere med viden om $ {addTheHotFramework} ...

Så er der nogen grund til, at du skulle gider at lære Vanilla JavaScript?

Det er svært at blive en stærk udvikler uden kendskab til selve sprogets kerne. Ligesom du har brug for at forstå grundlæggende principper i loven, før du kan hoppe ind i et bestemt lovfelt. Denne sammenligning er rent utilsigtet. ?

Jeg forstår, at flertallet af håbende webudviklere ønsker at blive ansat hurtigst muligt. Jeg ville også have det.

Det virker meget lettere at lave et nedbrudskursus om JavaScript-basics, springe ind i nogle smarte rammer, lave en ToDo-liste (lad en hvalp dø), uploade den til GitHub og derefter begynde at lede efter et job.

... men at investere tid i Vanilla JavaScript vil betale sig i det lange løb

Gør mig ikke forkert her. Jeg er ikke partisk mod JavaScript-rammer på nogen måde. Det er nøjagtigt det modsatte. Mange af dem hjælper dig med at skrive mere læsbar og vedligeholdelig kode. De giver dig mulighed for at skrive mere abstrakt kode, der ofte er nemmere at debugge.

Men JavaScript-økosystemet udvikler sig ret hurtigt. Nye rammer oprettes. Nye funktioner tilføjes til de eksisterende. Og vigtigst af alt, mange af nutidens hotteste rammer vil til sidst blive erstattet, såsom Angular 1.

Under sådanne omstændigheder, tror du stadig, at kendskab til en bestemt JavaScript-ramme er tilstrækkelig for en webudvikler?

Eller er det bedre at forstå, hvordan det sprog, som alle disse biblioteker og rammer er baseret på, fungerer under emhætten?

Hvis du har et solidt kendskab til JavaScript-grundlæggende,det eneste, du har brug for at blive fortrolig med, når du begynder at arbejde med en ny ramme, er dens syntaks . De grundlæggende regler vil være de samme, da under alle abstraktionslagene. Det er stadig bare almindeligt JavaScript.

Hvis din viden kun er begrænset til en enkelt JavaScript-ramme, har du svært ved at lære en ny. Forskellige rammer er ofte baseret på et andet sæt JavaScript-principper. I det lange løb vil du bruge mere tid på at forstå forskellige rammer og fejlfinding af den kode, du skriver i dem.

Alle JavaScript-rammer og biblioteker er uundgåeligt baseret på dens Vanilla-kerne.

Dette skal overbevise alle om, at viden om en ren JavaScript er et must i det lange løb. Det er en forudsætning for enhver succesrig udvikler, især for en, der hovedsageligt arbejder i JavaScript-økosystemet.

Personlig erfaring

For ikke længe siden så jeg tilbage på min rejse fra en advokat til en webudvikler. Det har allerede været 18 måneder siden jeg skrev min første JavaScript-funktion, og min 10. måned arbejdede som en professionel front-end-udvikler.

Jeg kan stadig huske, hvor udfordrende det var for mig at finde den rigtige måde at lære JavaScript på, da jeg ikke havde nogen tidligere programmeringserfaring. Jeg har prøvet (og prøver stadig) mange forskellige måder at blive en effektiv elev. Nogle af dem var mere givende, andre mindre.

Vigtigst kan jeg ikke understrege nok, hvor nyttigt det var for mig, at jeg lagde vægt på at lære ren JavaScript fra starten. Rammer kom senere.

I øjeblikket arbejder jeg med en React-Redux-stak. Alligevel støder jeg ofte på et problem, som jeg kan løse takket være min viden om Vanilla JavaScript. Disse bugs ville være meget mere udfordrende at løse med kun viden om en bestemt ramme.

Learning React eller Angular 2 lærer dig ikke, at objekter sendes som reference, eller hvordan lukninger fungerer. Det er meget sværere at prøve at forstå disse begreber under abstraktionerne med rammen. Dette gør enkle JavaScript-koncepter sværere at forstå.

Desuden, hvis du arbejder med JSX (React, Vue, Inferno) eller TypeScript (Angular 2), har du et andet abstraktionslag oven på det.

Hvis du vil forstå, hvordan disse rammer fungerer under emhætten, skal du vide, hvordan JavaScript fungerer først.

Du kan teste din viden om ren JavaScript ved at læse kildekoden til din yndlingsramme.Ikke kun vil dette give dig et billede af, hvordan det fungerer under emhætten, det vil også lære dig meget om dets logik, som du kan bruge i din egen kode. Du vil se, at rammens funktioner, der ser ud til at gøre en masse magi i din applikation, kun er kompositioner af grundlæggende JavaScript-koncepter.

Giv mig noget, jeg kan lære af

Det spørgsmål, du måske stiller nu, er "Hvad er nogle gode ressourcer, der kan hjælpe mig med at tilegne mig anstændig viden om Vanilla JavaScript?".

Der er masser af kurser og bøger om JavaScript og dets rammer. Alligevel er det få af dem, der sigter mod at lære dig Vanilla JavaScript på en omfattende måde. De fleste af dem er specialiserede i en bestemt JavaScript-teknologi.

Men der er stadig nogle gode ...

Veltalende JavaScript lærer dig ikke kun det grundlæggende om JavaScript, men også det grundlæggende om programmering generelt. Hvis du allerede er en avanceret udvikler, giver denne bog dig et nyt perspektiv på JavaScript og dets kerneprincipper.

En anden stor ressource er bogserien Du kender ikke JavaScript (YDKJS) af Kyle Simpson. Kyle ved virkelig hvordan man underviser. Hans forklaringer på avancerede JavaScript-koncepter er nybegyndervenlige, og han dækker dem grundigt. De blotte titler på bøgerne vil give dig et tip om, hvad du skal lære. "Up & Going", "Scope & Closures", "this & Object Prototypes", "Typer & Grammatik", "Async & Performance", "ES6 & Beyond". Der er også en ny syvende bog om funktionel programmering i JavaScript.

En af de store ting ved Eloquent JavaScript og YDKJS er, at du kan få dem gratis (tjek de medfølgende links). Men hvis du virkelig finder dem nyttige, så glem ikke at støtte forfatterne ved at købe dem.

Hvis du mere er en videokursusperson, kan du se Kyle's online kurser. Jeg antager, at det bedste du kan gøre er at se dem som en ledsager til hans bøger, da emnerne er de samme. Disse kurser betales dog.

Et andet videokursus, som jeg finder nyttigt, er Javascript: Understanding the Weird Parts af Anthony Alicea. Det forklarer, hvad der sker under hætten af ​​JavaScript på en tilgængelig måde. Det dækker avancerede begreber som prototypisk arv, funktionel programmering og omfangskæder.

Lær Vanilla JavaScript, nu

Hvis du investerer din dyrebare tid i at lære Vanilla JavaScript, vil du ikke fortryde det. Ikke kun indeholder det ordet vanilje , men det vil have en gavnlig indvirkning på programmeringsevner.

For mig er den bedste afvejning, at indlæring af ren JavaScript vil give dig meget mere i det lange løb end at investere tid i en bestemt ramme. Rammer er kun genveje. Under hætten er det hele JavaScript.

Du ser selv i en situation, hvor en ramme, du bruger, har en uventet adfærd. I sådanne tilfælde vil du blive tvunget til at undersøge denne fejl ved at gennemgå kildekoden. Sagde jeg, at selvom mange rammer mangler anstændig dokumentation, har de en ret kompleks kode? Men hej, stykke kage, ikke? Du har helt sikkert allerede brugt meget tid på at lære Vanilla JavaScript. Eller ikke endnu?

Skal du kun huske en ting fra dette indlæg:

Husk altid, at viden om Vanilla JavaScript hjælper dig med at blive en meget bedre udvikler. Periode.

Hvis du kunne lide denne artikel, skal du give den et par klapper. Jeg ville sætte stor pris på det.

Dette indlæg blev oprindeligt offentliggjort på min blog.

Vi ses på Twitter?

David Kopal (@coding_lawyer) | Twitter

De seneste tweets fra David Kopal (@coding_lawyer). front-end udvikler @ataccama | tidligere advokat | blogger ... twitter.com