O privire asupra viitorului JavaScript
Publicat: 2022-03-11Fiecare piață este guvernată de anumite concepte comune, iar dezvoltarea JavaScript nu face excepție.
Ciclul de viață al produsului este un concept pe care îl puteți aplica în mai multe medii diferite pentru a înțelege și a prezice comportamentul acestora. Este un concept de afaceri care ne ajută să înțelegem etapele prin care trece un produs de-a lungul vieții sale, explicând impactul acestor etape asupra măsurării sale de popularitate – în majoritatea cazurilor, vânzările. Dacă observăm modele de comportament pe piață, putem estima stadiul actual al unui produs și, prin urmare, putem face câteva predicții despre popularitatea acestuia.
Există patru etape: introducere, creștere, maturitate și declin, iar în graficul de mai sus, puteți vedea impactul asupra vânzărilor de produse așteptate pentru fiecare etapă. De exemplu, vânzările de smartphone-uri nu cresc ca acum cinci ani – de fapt, este adevărat opusul – așa că putem spune pe deplin că smartphone-urile intră în stadiul de maturitate.
În ultimii câțiva ani, am văzut introducerea multor tehnologii noi în JavaScript, dar am avut nevoie de timp pentru a vedea cum urma să le adopte piața. Nimeni nu vrea să fie specialistul în altă tehnologie promițătoare care se încheie cu adoptare zero. Acum, însă, este momentul să aruncăm o altă privire. În acest articol, voi arunca o privire la cât de popular devine JavaScript și la factorii care ar fi putut afecta această popularitate și voi încerca să prezic cum va arăta viitorul JavaScript.
Viitorul caracteristicilor limbajului JavaScript
De când Asociația Europeană a Producătorilor de Calculatoare (ECMA) a stabilit ciclul de lansare pe ani pentru ECMAScript, o specificație JavaScript standardizată, nu am văzut multe caracteristici noi care vin în limbaj - doar câteva în fiecare an. Acesta ar putea fi unul dintre motivele pentru care am observat o creștere a adoptării limbilor care se compilează la ES5, cum ar fi TypeScript sau ReasonML, ambele aducând caracteristici limbajului care sunt foarte solicitate de comunitate. Acest lucru nu este nou — JavaScript a trecut prin acest proces înainte (CoffeeScript) și, în cele din urmă, acele caracteristici au ajuns să fie îmbinate în standardul de limbaj în sine și probabil că acesta este viitorul la care ne putem aștepta și pentru aceste noi caracteristici tipizate.
Dar acum începem să vedem o schimbare în jocul pe piața de compilare în js, odată cu disponibilitatea tot mai mare a WebAssembly în browsere. Acum, putem folosi aproape orice limbaj și îl putem compila pentru a rula la viteza aproape nativă într-un browser și, mai important, începem să vedem suport pentru funcții sigure pentru viitor, cum ar fi suportul pentru fire de execuție, care ne va permite să profităm de mai multe -arhitectura procesorului care reprezinta viitorul inevitabil al tuturor dispozitivelor.
Lanțul de instrumente oficial pentru WebAssembly vă va ajuta să compilați C/C++, dar există o mulțime de compilatoare furnizate de comunitate pentru diferite limbi, cum ar fi Rust, Python, Java și Blazor (C#).
În special, comunitatea Rust este destul de activă și am început să vedem cadre frontale complete precum Yew și Dodrio.
Acest lucru aduce o mulțime de noi posibilități aplicațiilor bazate pe browser și trebuie doar să testați unele dintre aplicațiile grozave create cu WebAssembly pentru a vedea că aplicațiile bazate pe browser aproape native sunt o realitate acum, de exemplu, Sketchup sau Magnum.
Adoptarea limbilor tipizate care se compilează în ES5 este suficient de matură, jucătorii sunt bine stabiliți și nu vor dispărea (sau vor fi fuzionați cu ES) în viitorul apropiat, dar vom vedea o schimbare lentă în favoarea limbilor tipizate cu WebAssembly.
Web
Framework front-end
În fiecare an, asistăm la o mare luptă pe piața framework-urilor front-end pentru web, iar React a fost câștigătorul incontestabil în ultimii câțiva ani - de la introducerea tehnologiei lor, Virtual DOM, am văzut un adoptarea obligată de la omologii lor pentru a rămâne relevanți în luptă.
Cu câțiva ani în urmă, am văzut introducerea unei noi abordări radicale a dezvoltării de aplicații web cu Svelte, „cadru de compilare” care dispare în timpul compilării, lăsând cod JavaScript mic și foarte eficient. Cu toate acestea, această caracteristică nu a fost suficientă pentru a convinge comunitatea să treacă la Svelte, dar odată cu lansarea recentă a Svelte 3.0, au introdus programare reactivă reală în cadru și comunitatea este încântată, așa că poate asistăm la următorul lucru important în față. -cadre de sfârșit.
Inspirat de operatorul destinului:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
Svelte aduce reactivitate la JavaScript prin supraîncărcarea utilizării instrucțiunilor de etichetă cu reactivitate în timpul compilării, instruind codul să fie executat în ordine topologică:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
Aceasta este o idee radical nouă, care ar putea ajuta în diferite contexte, așa că creatorul Svelte lucrează și la svelte-gl, un cadru de compilare care va genera instrucțiuni WebGL de nivel scăzut direct dintr-un grafic al scenei 3D declarat în HTMLx.
Inutil să spunem că React, Angular și Vue.js nu vor dispărea peste noapte, comunitățile lor sunt uriașe și vor rămâne relevante câțiva ani de acum înainte — nici măcar nu suntem siguri dacă Svelte va fi succesorul real, dar noi poate fi sigur de ceva: vom folosi ceva diferit mai devreme sau mai târziu.
WebXR și viitorul web-ului imersiv
Realitatea virtuală s-a luptat în ultimii 60 de ani să-și găsească un loc în mainstream, dar tehnologia nu era încă gata. Cu mai puțin de zece ani în urmă, când Jon Carmack s-a alăturat Oculus VR (acum parte a Facebook Technologies, LLC), un nou val de VR a început să crească și, de atunci, am văzut o mulțime de dispozitive noi care acceptă diferite tipuri de VR și desigur, proliferarea aplicațiilor capabile de VR.
Furnizorii de browsere nu au vrut să piardă această oportunitate, așa că s-au alăturat specificației WebVR permițând crearea de lumi virtuale în JavaScript cu WebGL și biblioteci bine stabilite precum three.js. Cu toate acestea, cota de piață a utilizatorilor cu dispozitive de 6 dof a fost încă nesemnificativă pentru implementările web masive, dar web-ul mobil a fost încă capabil să ofere o experiență 3D cu API-ul de orientare a dispozitivului, așa că am văzut o grămadă de experimente și o mulțime de videoclipuri 360 pentru un timp.
În 2017, odată cu introducerea ARKit și ARCore, noi capabilități au fost aduse dispozitivelor mobile și tot felul de aplicații cu experiențe AR și MR.
Cu toate acestea, încă se pare puțin nefiresc să descărcați o anumită aplicație pentru o anumită experiență AR atunci când explorați lumea din jurul vostru. Dacă am putea avea o singură aplicație pentru a explora experiențe diferite... Acest lucru sună familiar. Am rezolvat această problemă în trecut cu browserul, așa că de ce să nu mai încercăm?

Anul trecut, Mozilla a introdus WebXR Device API Spec (a cărui ultimă versiune de lucru, la momentul scrierii acestui articol, este de acum două săptămâni) pentru a aduce capabilități AR, VR și MR (ergo XR) în browser.
Câțiva dintre cei mai importanți furnizori de browsere au urmat cu implementarea lor, cu o excepție importantă: Safari mobile, așa că pentru a-și dovedi punctul de vedere, Mozilla a lansat un browser compatibil WebXR sub platforma iOS WebXR Viewer.
Acum, acesta este un pas important, deoarece combinația dintre AR și VR aduce 6dof pe dispozitivele mobile și căștile bazate pe dispozitive mobile, cum ar fi Google Cardboard sau Samsung Gear VR, așa cum puteți vedea în acest exemplu, crescând cota de piață a 6dof dispozitive cu o marjă mare și permițând posibilitatea unei implementări web pe scară largă.
În același timp, băieții de la Mozilla au lucrat la un nou cadru web pentru a facilita crearea de lumi și aplicații 3D numite A-Frame, un cadru declarativ bazat pe componente cu sintaxă HTML bazată pe three.js și WebGL, având doar un singur lucru în minte — să readuci distracția și ușurința de utilizare în programarea web.
Aceasta face parte din cruciada lor către web-ul imersiv, un nou set de idei despre cum ar trebui să arate web-ul în viitor. Din fericire pentru noi, ei nu sunt singuri și vom începe să vedem experiențe din ce în ce mai captivante pe web.
Dacă doriți să încercați, descărcați WebXR Viewer și vizitați acest site pentru a vedea posibilitățile web-ului imersiv.
Încă o dată, aplicațiile standard bazate pe browser nu se vor estompa într-un an sau doi – probabil că le vom avea întotdeauna. Dar aplicațiile 3D și experiențele XR sunt în creștere, iar piața este pregătită și dornică să le aibă.
Suport nativ pentru ES6
Aproape fiecare tehnologie inventată în JavaScript în ultimul deceniu a fost creată pentru a rezolva problemele generate de implementarea de bază a browserelor, dar platforma în sine s-a maturizat foarte mult în ultimii câțiva ani și majoritatea acestor probleme au dispărut, după cum putem vedea. cu Lodash, care a domnit cândva pe reperele de performanță.
Același lucru se întâmplă și cu DOM, ale cărui probleme au fost cândva inspirația reală pentru crearea cadrelor de aplicații web. Acum, este un API matur pe care îl puteți folosi fără cadre pentru a crea aplicații - de fapt, asta sunt componentele web. Ele sunt „cadrul” platformei pentru a crea aplicații bazate pe componente.
O altă parte interesantă a evoluției platformei este limbajul în sine. Am folosit Babel.js în ultimii ani pentru a putea folosi cele mai recente caracteristici ale ECMAScript, dar din moment ce standardul în sine a început să stagneze puțin în ultimii ani, a fost suficient timp pentru a permite furnizorilor de browsere pentru a implementa majoritatea caracteristicilor lor, inclusiv suportul nativ al declarației de import static. Așa că acum, putem începe să luăm în considerare crearea de aplicații fără Babel.js sau alte compilatoare, deoarece avem (din nou) suportul caracteristicilor limbajului în platforma în sine și, deoarece Node.js folosește aceeași VM V8 ca Google Chrome , am început să vedem un suport mai puternic pentru ES6 în Node.js, chiar și cu declarația de import static sub indicatorul modulelor experimentale.
Acest lucru nu înseamnă că vom înceta să vedem aplicații compilate la nivel profesional, dar înseamnă că începerea cu o aplicație bazată pe browser va fi ușor și distractiv așa cum a fost cândva.
JavaScript pe partea serverului
Chiar dacă JavaScript a început cu serverul în 1995 cu Netscape Enterprise Server, abia după prezentarea lui Ryan Dahl din 2009, JavaScript a început să fie luat în considerare în mod serios pentru aplicațiile de pe server. O mulțime de lucruri s-au întâmplat în ultimul deceniu cu Node.js. A evoluat și s-a maturizat foarte mult, creând încă o dată oportunitatea pentru perturbări și noi tehnologii.
În acest caz, vine din mâna propriului său creator, Ryan Dahl, care a lucrat la o nouă perspectivă a aplicațiilor securizate pe server cu Deno, o platformă care acceptă în mod nativ cele mai recente funcții de limbă, cum ar fi async/wait și De asemenea, cel mai popular limbaj de compilare în js TypeScript, care vizează cea mai bună performanță datorită implementării lor în Rust și utilizării Tokio, dar mai important, cu o nouă filozofie de securitate care îl diferențiază de majoritatea platformelor de pe server precum Python, Ruby sau Java). Inspirat de modelul de securitate al browserului, Deno vă va permite să utilizați resursele gazdei numai după ce utilizatorul a acordat în mod explicit permisiunile procesului, ceea ce ar putea suna puțin obositor la început, dar ar putea duce la o mulțime de implicații, permițând să rulăm cod nesecurizat într-un mediu securizat doar având încredere în platformă.
Node.js va exista în continuare în viitor, dar este posibil să începem să vedem servicii fără server, cum ar fi AWS Lambda și Azure Functions, pentru a oferi funcționalitatea Deno ca alternativă pentru a oferi execuție nesecurizată de cod pe server pe sistemele lor.
Concluzie
Sunt vremuri interesante în lumea JavaScript - o mulțime de tehnologii s-au maturizat suficient pentru a lăsa spațiu pentru inovare, comunitatea activă nu s-a oprit niciodată să ne uimească cu ideile lor geniale și incredibile și ne așteptăm la o mulțime de alternative noi la instrumentele bine stabilite. deoarece stadiile lor mature ajung repede; nu vom înceta să le folosim, deoarece multe dintre ele sunt cu adevărat bune și există o mulțime de dovezi pe câmpul de luptă, dar vor începe să apară piețe noi și interesante și ar fi bine să fii pregătit.
Nu este ușor să fii la curent cu cele mai recente din lumea JavaScript, din cauza ritmului de dezvoltare, dar există câteva surse care te pot ajuta cu adevărat. În primul rând, cea mai importantă sursă de știri, după părerea mea, este Echo JS, unde puteți o cantitate incredibilă de conținut nou în fiecare oră. Cu toate acestea, dacă nu aveți timp, buletinul informativ JavaScript Săptămânal este un rezumat excelent al săptămânii în JS. Pe lângă aceasta, este, de asemenea, important să urmăriți conferințele din întreaga lume, iar canalele YouTube precum JSConf, React Conf și Google Chrome Developers sunt extraordinar de utile.
Dimpotrivă, dacă sunteți interesat să vedeți o critică constructivă a spre care se îndreaptă JavaScript, vă recomand să citiți Ca dezvoltator JS, This Is What Keeps Me Up at Night de către coleg dezvoltator JavaScript Justen Robertson.
Citiți suplimentare pe blogul Toptal Engineering:
- TypeScript vs. JavaScript: Ghidul dvs. de acces