Ce este JavaScript?

A spune că JavaScript este în creștere în dezvoltarea de web ar fi o subevaluare. De fapt, acum câțiva ani, programatorul renumit Jeff Atwood a inventat Legea lui Atwood în care a declarat:

Orice aplicație care poate fi scrisă în JavaScript va fi în cele din urmă scrisă în JavaScript.

În momentul în care scrieți acest articol, există atât de multe cadre și biblioteci JavaScript, încât este copleșitor să știți de unde să începeți, mai ales dacă sunteți începător. 

Și știu că o mare parte din ceea ce publicăm aici este orientat spre cei care au deja experiență în scrierea de aplicații web sau în a face ceva în dezvoltarea web. Dar asta nu este publicul țintă pentru acest articol. 

În schimb, aceasta este scrisă în mod special pentru cei dintre voi care nu au scris niciodată (sau abia) o linie de JavaScript și doresc să afle mai multe despre limbă și să înțeleagă ce este acolo. În plus, dorim să acoperim modul în care este folosit și ce să se aștepte de la acesta.

Pe scurt, dacă sunteți un profesionist condus, atunci acest articol nu este pentru dvs.; cu toate acestea, dacă sunteți curios să intrați în JavaScript, dar nu sunteți sigur de unde să începeți, atunci acest primer vă va ajuta să vă stabiliți în direcția cea bună.

Aflați JavaScript: Ghidul complet

Am creat un ghid complet care vă ajută să învățați JavaScript, indiferent dacă începeți doar ca dezvoltator web sau doriți să explorați subiecte mai avansate.

JavaScript definit

Probabil ați auzit JavaScript denumit "limbaj de scripting pe partea clientului", care este un alt mod de a spune că este un limbaj de programare care rulează într-un browser web. 

Alternativ, Wikipedia o definește astfel:

JavaScript este un limbaj de programare la nivel înalt, dinamic, unic și interpretat. Acesta a fost standardizat în specificația limbajului ECMAScript.

Toate cele de mai sus sunt adevărate (cu grade diferite de complexitate), dar este, de asemenea, demn de remarcat faptul că JavaScript poate rula și pe server. Asta incearca dincolo de noi insine. În schimb, hai să vorbim mai întâi despre unele dintre punctele de mai sus și vom veni să vorbim despre server-side JavaScript mai târziu în articol.

  • Nivel inalt. Când un limbaj de programare este la nivel înalt, este considerat unul construit fără a fi nevoie să cunoașteți detalii mai fine despre computerul de bază. Nu trebuie să gestionați memoria, nu trebuie să știți ce tip de procesor rulează și nu trebuie să vă ocupați de lucruri precum indicii (cum ar fi în limbi precum C sau Assembly).
  • Dinamic. Limbile care sunt dinamice permit dezvoltatorilor să extindă anumite aspecte ale limbii adăugând un nou cod sau introducând obiecte noi (cum ar fi Post obiect) în timp ce programul rulează față de necesitatea de a compila programul. Aceasta este o caracteristică puternică a JavaScript.
  • netipizat. Dacă aveți experiență de programare, probabil că ați întâlnit anumite tipuri de limbi care necesită să declarați tipul de variabilă cu care lucrați. De exemplu, probabil variabila dvs. va stoca a şir sau a boolean. În JavaScript, acest lucru nu este necesar. În schimb, pur și simplu declarați o variabilă cu var cuvinte cheie.
  • Interpretat. Atunci când o limbă este o limbă compilată, codul pe care îl scrie este convertit într-un executabil binar pe care îl puteți distribui altora. În Windows, aceste fișiere sunt cunoscute sub numele de fișiere EXE. Pe OS X, acestea sunt adesea programe pe care le descărcați de pe App Store sau pe care le trageți în directorul Applications. JavaScript este interpretat, ceea ce înseamnă că nu există niciun compilator. În schimb, codul este interpretat (așa cum este PHP), deci există o piesă intermediară de software numită interpretul care se află între codul pe care l-ați scris și computerul pentru a traduce instrucțiunile înainte și înapoi.
  • standardizat. JavaScript este standardizat (numele său oficial fiind ECMAScript), ceea ce înseamnă că orice browser care implementează standardul va oferi aceleași caracteristici ca orice alt browser. Dacă nu este standardizat, atunci Chrome poate oferi anumite funcții pe care Edge nu le oferă și invers.

Acum că am acoperit atributele limbii, putem discuta anumite aspecte și nuanțe despre limbă. 

Deși toate cele de mai sus sunt importante, este, de asemenea, esențial să știți cum funcționează limba (mai ales dacă ați lucrat cu alte limbi), astfel încât să nu începeți să vă dezvoltați cu idei preconcepute despre cum ar putea munca sau modul în care aceasta ar trebui să muncă.

În schimb, aș prefera să mă ocup de cum face lucrați astfel încât să puteți începe să scrieți codul și să înțelegeți exact ce faceți.

Despre limbă

Mai presus de toate, JavaScript este un limbaj de programare orientat pe obiecte, dar probabil diferă puțin de ceea ce vedeți de obicei (dacă ați folosit anterior un limbaj de programare orientat pe obiecte).

JavaScript este ceea ce se numește un limbaj prototip. Aceasta înseamnă că toate obiectele din JavaScript, cum ar fi Şir, se bazează pe prototipuri. 

Acest lucru ne permite, ca dezvoltatori, să adăugăm funcționalități suplimentare obiectelor prin folosirea moștenirii prototip:

Protocolul bazat pe prototip este un stil de programare orientat obiect în care reutilizarea comportamentului (cunoscută ca moștenire) este realizată printr-un proces de clonare a obiectelor existente care servesc ca prototipuri.

Aș susține că dacă nu ați mai lucrat vreodată cu un limbaj orientat pe obiecte, atunci puteți avea un avantaj în acest moment deoarece nu aveți un model conceptual de schimbat pentru a vă gândi cum funcționează acest lucru.

Dacă, pe de altă parte, tu avea a lucrat în aceste tipuri de limbi, atunci cred că merită să distingem modul în care moștenirea prototypală diferă de moștenirea clasică:

  • În moștenire clasică, noi, ca dezvoltatori, vom scrie o clasă. Mai multe obiecte pot fi create din această singură clasă. În plus, putem scrie o altă clasă care moștenește din această clasă și apoi creează instanțe de acestea clase. În această situație, subclasele partajează codul cu clasa de bază. Deci, atunci când creați o instanță a unei subclase, obțineți funcționalitatea atât a subclaselor, cât și a claselor părinte.
  • În moștenire prototypală, nu există nici un fel de clasă. În schimb, pur și simplu definiți un obiect și introduceți orice funcționalitate este necesară. Când doriți să adăugați funcționalitate unui obiect existent, faceți acest lucru prin adăugarea acestuia la prototipul obiectului. Dacă încercați să apelați o metodă pe un obiect cum ar fi Număr atunci va căuta mai întâi metoda pe acel obiect. Dacă nu o găsește, atunci se va mișca în sus până când va găsi metoda (care poate trăi pe bază Obiect).

În cele din urmă, și poate cel mai important lucru pe care trebuie să-l notezi, este că atunci când faci o schimbare a unui obiect prin prototipul său, atunci este accesibil tuturor celor care folosesc acest obiect (cel puțin în contextul mediului tău).

Este foarte puternic, este foarte cool, dar are și o ușoară schimbare în gândire dacă nu sunteți obișnuit să lucrați într-un mediu ca acesta.

Cum vom folosi JavaScript?

În ceea ce privește modul în care punem JavaScript în practică, depinde în cele din urmă de obiectivele dvs. La un moment dat, lucrul cu JavaScript a însemnat că trebuie să "faci ceva să se întâmple" pe o pagină web. A fost menită să controleze comportamentul.

Acesta ar putea fi introducerea unui element, eliminarea (sau ascunderea) unui element sau a unor astfel de lucruri. Apoi, web-ul a avansat puțin și browserele au putut să efectueze apeluri asincrone către server, să se ocupe de răspuns și apoi să schimbe starea paginii pe baza acestui răspuns.

Toate acestea sunt realizate prin Ajax. Dacă citiți acest lucru, probabil că sunteți familiarizat cu termenul. Dacă nu sunteți, puteți să vă gândiți la aceasta ca pe o modalitate prin care JavaScript să poată efectua un apel către serverul care găzduiește pagina și apoi să se ocupe de răspunsul pe care îl primește toate fără reîncărcarea paginii.

Dar este maturată chiar și dincolo de asta. 

Google a dezvoltat un motor extrem de sofisticat de parsare JavaScript cunoscut sub numele de V8, și alte browsere sunt de lucru pentru a oferi performanță JavaScript optimă, precum și. 

De fapt, acum putem scrie JavaScript pe server folosind instrumente cum ar fi Node.js. În plus, suntem chiar capabili să construim aplicații hibride care rulează pe dispozitivele noastre mobile. Aceasta înseamnă că suntem capabili să construim soluții pentru telefoanele noastre, tabletele și computerele desktop prin utilizarea JavaScript.

Și aceasta vine dintr-o limbă care a fost folosită odată ca o modalitate de a anima lucrurile pe ecran. Toate acestea, pentru a spune este că, dacă sunteți nou la JavaScript, nu-l subestimați.

"Ce ar trebui să aștept de la limbă?"

Toate cele de mai sus sunt interesante de citit și este distractiv să vedem ce putem face, dar dintr-o perspectivă pur practică, ce putem aștepta de la limba JavaScript? 

Indiferent dacă sunteți nou în limbă sau căutați să învățați o nouă limbă atunci când ați venit dintr-un alt fundal, aveți un nivel de așteptări cu privire la ceea ce poate oferi limba. 

Și deși am vorbit despre modul în care limba funcționează dintr-o perspectivă internă, nu am vorbit cu adevărat despre obiectele disponibile în limbaj, să nu mai vorbim de API-uri. Sincer, acoperirea API-urilor și a funcțiilor încorporate în limbaj ar fi un articol propriu. 

Dar care acoperă obiectele încorporate? Este ceva ce putem examina înainte de a termina acest articol:

  • Obiect. Obiectul de bază de la care toate celelalte obiecte moștenesc o parte din funcționalitatea lor de bază.
  • Funcţie. Deoarece JavaScript este cu adevărat orientat spre obiect, înseamnă că totul este un obiect, inclusiv funcții. Deci, când creați o nouă funcție, creați o referință la un obiect cu un tip de funcție. Și funcțiile au proprietăți pe care le puteți inspecta în timpul execuției (cum ar fi argumentele care au fost transmise).
  • boolean. Acest obiect serveste ca un wrapper de obiecte pentru o valoare booleana. În multe limbi, booleanii sunt un tip de date care este fie Adevărat sau fals. În JavaScript, puteți lucra în continuare cu aceste valori, dar trebuie înțelese ca obiecte.
  • Număr. În multe limbi de programare, există tipuri primitive, cum ar fi pluti, int, dubla, si asa mai departe. În JavaScript, există doar un tip de număr, iar acesta este și un obiect.
  • Data. Lucrul cu datele din programare nu este niciodată distractiv, mai ales atunci când introduceți fusuri orare. Nu pot spune că JavaScript va rezolva toate problemele dvs., deoarece se referă la fusurile orare, dar poate fi mai ușor să lucrați cu date (tot drumul de la an și lună până la zi, oră, minut și secundă).
  • Şir. Aproape fiecare limbaj de programare are un tip de date primitiv. JavaScript nu este mult diferit, cu excepția faptului că, așa cum v-ați aștepta, șirul este un obiect cu proprietăți proprii.

Amintiți-vă că toate tipurile pe care le vedeți mai sus sunt obiecte cu proprietăți (și funcții) proprii pe care le puteți apela. Acest lucru nu înseamnă că trebuie să apelați constructori pentru a vă instanțiate variabilele. Asta este, puteți crea șiruri și booleani și numere de genul:

var example_string = 'Salut lume!'; var example_boolean = true; var example_number = 42;

Dar, în cele din urmă, ele sunt încă obiecte.

Pentru a fi clar, acestea sunt de bază obiecte. Există obiecte mult mai avansate care merită explorate, mai ales dacă veți lucra cu manipularea erorilor, diferite tipuri de colecții dincolo de Arrays și așa mai departe.

Dacă sunteți interesat să citiți mai multe despre acestea, vă recomandăm să consultați această pagină în Rețeaua de dezvoltatori Mozilla.

Ce biblioteci și cadre sunt disponibile?

Dacă ați ținut pasul cu diferitele cadre, biblioteci și alte instrumente care există în economia JavaScript, atunci nu vă aflați în nici un fel pe cât de vibrantă a devenit economia.

Dar acest articol vizează cei care doresc să înceapă cu JavaScript. Acum, că aveți o înțelegere de bază a modului în care limbajul este structurat și cum funcționează, este timpul să analizați bibliotecile și cadrele oferite pentru a ușura dezvoltarea web și / sau a aplicațiilor.

  • jQuery este o bibliotecă care urmărește să furnizeze un API cross-browser care vă permite să "scrieți mai puțin, să faceți mai mult."
  • Angular este un cadru JavaScript care urmărește să ușureze crearea aplicațiilor pentru o singură pagină.
  • React este o bibliotecă JavaScript pentru a construi interfețe utilizator.
  • Backbone își propune să ofere structură aplicațiilor web prin utilizarea modelelor, colecțiilor și vederilor.
  • Ember.js este un alt cadru pentru "crearea de aplicații web ambițioase".
  • Și altele.

Aceasta este departe dintr-o listă completă a ceea ce este disponibil, dar este un început și este o mână de opțiuni pe care cei care se familiarizează cu JavaScript ar trebui să fie cel puțin conștienți, chiar dacă nu lucrați cu ei.

Și pe măsură ce începeți să învățați JavaScript și începeți să preluați unele dintre aceste instrumente, puteți găsi cât de populare sunt unele dintre ele atunci când vine vorba de unele dintre propriile aplicații preferate.

Învățarea JavaScript

După cum v-ați așteptat, Envato este totul pentru "abilitățile de predare a milioane de oameni din întreaga lume". Deci, ce ar fi un post ca acesta, dacă nu include link-uri către unele dintre cele mai populare articole și cursuri JavaScript?

  • Quiz: JavaScript ES6, știi instrumentul potrivit pentru job?
  • Păstrarea de promisiuni cu JavaScript
  • Crearea de aplicații cu o singură pagină cu WordPress și Angular.js
  • Geniul șirului de șablon din ES6
  • JavaScript ES6 Fundamentals
  • Testarea directivelor unghiulare
  • JavaScript pentru Windows 10 Aplicații universale

Toate aceste resurse sunt ideale pentru a începe cu JavaScript și adăugați-l în repertoriul dvs. de abilități de dezvoltare web.

Concluzie

Când vine vorba de dezvoltarea web, JavaScript este aici pentru a rămâne. Deși este posibil să nu utilizați ceea ce este considerat "vanilla JavaScript" și să alegeți una dintre numeroasele biblioteci și / sau cadre disponibile, JavaScript este o limbă pe care aproape fiecare dezvoltator web trebuie să o cunoască.

Desigur că nu toata lumea funcționează pe front-end. Unele sunt dezvoltatori pur server-side; unii sunt dezvoltatori pur client-side. Cu toate acestea, trebuie să lucrăm împreună pentru a ne asigura că diferitele părți ale aplicațiilor noastre comunică între ele.

În acest scop, este puțin important să înțelegem modul în care datele din partea clientului sunt trimise către server prin intermediul JavaScript și cum este procesat pe partea de server și apoi returnat clientului pentru a fi utilizat în orice mod.

Nu fi atât de rapid pentru a scrie JavaScript doar pentru că nu sunteți un dezvoltator de front-end. Cotele sunt, cineva cu care lucrezi folosindu-l și va avea nevoie de munca ta pentru a lega părți ale aplicației împreună.

Acordat, acest articol este doar zgârierea suprafeței. Așa cum am spus la început, scopul articolului este de a explica ce este JavaScript, cum este folosit și ce să se aștepte de la acesta, în special pentru cei care încep doar cu limba.

JavaScript a devenit una dintre limbile de-facto de lucru pe web. Nu este fără curbele de învățare și există o mulțime de cadre și biblioteci pentru a vă menține ocupați. Dacă sunteți în căutarea unor resurse suplimentare pentru a studia sau a utiliza în munca dvs., verificați ce avem la dispoziție pe piața Envato.

Dacă v-ați bucurat de acest articol, puteți, de asemenea, să verificați cursurile și tutorialele mele pe pagina mea de profil și, dacă sunteți interesat, puteți citi mai multe articole despre dezvoltarea WordPress și WordPress pe blogul meu. 

Resurse aditionale

  • Șef Programarea în primul rând a JavaScript
  • Elocvent JavaScript de Marijn Haverbeke
  • Douglas Crockford JavaScript: piesele bune
  • JavaScript la Rețeaua de dezvoltatori Mozilla
Cod