Comparația cadrelor Js. Biblioteci, instrumente și cadre JavaScript esențiale pe care ar trebui să le cunoașteți. Ce este JavaScript Framework

Există o mulțime de cadre Javascript disponibile chiar acum. Este o provocare să știi pe care să o folosești pentru ce proiect. Ce cadru crezi că este cel mai bun pentru javascript? Ei bine, depinde de proiectul tău. Puteți vedea mai jos lista celor mai bune cadre Javascript. Am ales-o pe baza unor aspecte legate de puterea comunității, greutatea etc.

Vue.js este un cadru JavaScript progresiv, care poate fi adoptat progresiv pentru construirea unei interfețe de utilizare pe web. Vue.js este o bibliotecă pentru construirea de interfețe web interactive. Oferă componente reactive la date cu un API simplu și flexibil.

Aurelia este un cadru de client JavaScript pentru web, mobil și desktop, care folosește convenții simple pentru a vă spori creativitatea.

Ember.js este un cadru JavaScript care reduce mult timpul, efortul și resursele necesare pentru a construi orice aplicație web. Se concentrează pe a vă face pe dvs., dezvoltatorul, cât mai productiv posibil, realizând toate sarcinile comune, repetitive, dar esențiale, implicate în majoritatea proiectelor de dezvoltare web.

Un cadru JavaScript modest pentru HTML pe care îl aveți deja.

NativeScript este un cadru open source pentru crearea de aplicații mobile cu adevărat native cu JavaScript. Folosiți abilități web, cum ar fi Angular și Vue.js, FlexBox și CSS și obțineți interfață de utilizare nativă și performanță pe iOS și Android.

Releu

Relay este un cadru JavaScript pentru construirea de aplicații React bazate pe date.

Un cadru JavaScript funcțional și reactiv pentru cod mai curat.

Babylon.js: un cadru JavaScript complet pentru construirea de jocuri 3D cu HTML 5 și WebGL.

Flight este un cadru JavaScript ușor, bazat pe componente, care mapează comportamentul la nodurile DOM. Twitter îl folosește pentru aplicațiile lor web.

Cadru Javascript MVC pentru dezvoltare web.

Un cadru frontal ușor pentru crearea de site-uri scalabile și performante, receptive.

Onsen UI este o bibliotecă de componente UI care vă ajută să creați aplicații web hibride și mobile frumoase, atât pentru Android, cât și pentru iOS, folosind Javascript.

Cylon.js este un cadru JavaScript pentru robotică, computere fizice și Internetul obiectelor. Face incredibil de ușor să comandați roboți și dispozitive.

Glumă

Jest este un cadru de testare unitară JavaScript, folosit de Facebook pentru a testa serviciile și aplicațiile React.

Un cadru JavaScript minimalist, în timp real, creat pentru NodeJS, React-Native și browser.

R

AVA

Bootbox.js este o mică bibliotecă JavaScript care vă permite să creați casete de dialog programatice utilizând modalii Bootstrap, fără a vă face griji cu privire la crearea, gestionarea sau eliminarea oricăruia dintre elementele DOM necesare sau gestionatorii de evenimente JS.

Set bogat de widget-uri javascript fără dependență de un cadru pe partea de server.

Un cadru de mixin JavaScript orientat pe aspect minimalist.

Un cadru JavaScript pentru realizarea de aplicații web mobile.

Highcharts JS este un cadru de diagrame JavaScript.

scripty2 este un cadru JavaScript open source pentru interfețe avansate de utilizator bazate pe HTML.

Crafty este un cadru flexibil pentru jocuri Javascript.

Modernizr este o bibliotecă JavaScript care detectează funcțiile HTML5 și CSS3 în browserul utilizatorului.

Un cadru JavaScript minim bazat pe componente.

Un port al limbajului de vizualizare Processing la JavaScript.

Raphaël este o mică bibliotecă JavaScript care ar trebui să vă simplifice munca cu grafică vectorială pe web.

RequireJS este un fișier JavaScript și încărcător de module.

Gustare

Snack este o bibliotecă JavaScript mică și simplă. Deși este ideal pentru proiecte mici, este suficient pentru a construi aplicații web complexe, cu mai multe browsere.

Zepto

Zepto este o bibliotecă JavaScript minimalistă pentru browsere moderne, cu un API compatibil în mare parte cu jQuery.

Jasmine este un cadru de dezvoltare bazat pe comportament pentru testarea codului JavaScript. Nu depinde de alte cadre JavaScript. Nu necesită un DOM. Și are o sintaxă curată, evidentă, astfel încât să puteți scrie cu ușurință teste.

QUnit

QUnit este un cadru de testare unitar JavaScript puternic, ușor de utilizat.

Moca

Mocha este un cadru de testare JavaScript bogat în funcții care rulează pe Node.js și browser, făcând testarea asincronă simplă și distractivă.

soma.js este un cadru javascript scalabil creat pentru a ajuta dezvoltatorii să scrie aplicații slab cuplate pentru a crește scalabilitatea și mentenabilitatea.

Cadrul de codificare creative JavaScript multiplatformă.

Jaggery este un cadru pentru a scrie aplicații web și servicii web centrate pe HTTP pentru toate aspectele aplicației: front-end, comunicare, logica server și persistență în Javascript pur.

Un cadru Javascript pentru construirea de aplicații strălucitoare.

HTML este grozav pentru declararea documentelor statice, dar se clătește atunci când încercăm să-l folosim pentru declararea vizualizărilor dinamice în aplicațiile web. AngularJS vă permite să extindeți vocabularul HTML pentru aplicația dvs.

Un cadru de aplicație JavaScript care accentuează modularitatea și încapsularea.

jQuery este o bibliotecă JavaScript rapidă, mică și bogată în funcții. Face lucruri precum traversarea și manipularea documentelor HTML, gestionarea evenimentelor, animația și Ajax mult mai simple cu un API ușor de utilizat, care funcționează într-o multitudine de browsere.

Kango

cadru de extensii cross-browser numit Kango. Scopul Kango este de a face dezvoltarea extensiilor de browser mai ușoară, mai ieftină și mai plăcută. Cu Kango puteți crea extensii pentru toate browserele majore în câteva minute folosind numai JavaScript.

Cappuccino este un cadru care facilitează crearea de aplicații web avansate. Cu doar câteva linii de cod puteți avea o aplicație construită cu undo și reface complet, vizualizări de tabel cu adevărat uimitoare, glisare și plasare și fiecare aspect și comportament modern de interfață la care vă puteți aștepta pe desktop.

ZK

ZK este cel mai bun cadru Java open source pentru construirea de aplicații web și mobile pentru întreprinderi.

qooxdoo este un cadru JavaScript universal cu un set coerent de componente individuale și un lanț de instrumente puternic.

Durandal este un cadru client multidispozitiv, multiplatformă, scris în JavaScript și conceput pentru a face aplicațiile cu o singură pagină (SPA) ușor de creat și întreținut.

SproutCore este un cadru open-source pentru a construi experiențe de utilizator extraordinar de rapide și inovatoare pe web.

Wakanda este un cadru de aplicații web open-source pentru dezvoltarea aplicațiilor web și mobile în JavaScript.

Webix

Webix este o bibliotecă de widget-uri JavaScript ui multi-browser. Creați aplicații web mobile și desktop rapide care rulează pe toate dispozitivele tactile cu framework HTML5.

Reacţiona

O bibliotecă JavaScript pentru construirea de interfețe cu utilizatorul.

Sammy

Sammy este un cadru javascript mic construit pe jQuery, este RESTful Evented Javascript.

Dezvoltatorii din zilele noastre au posibilitatea de a alege când vine vorba de selectarea unui cadru MV* pentru structurarea și organizarea aplicațiilor lor web JavaScript.

Knockout este o bibliotecă JavaScript MVVM (o variantă modernă a MVC) care facilitează crearea de interfețe de utilizator bogate, asemănătoare desktop-ului, cu JavaScript și HTML. Folosește observatori pentru a face ca UI să rămână automat sincronizat cu un model de date subiacent, împreună cu un set puternic și extensibil de legături declarative pentru a permite dezvoltarea productivă.

CorMVC este un cadru Model-View-Controller (MVC) alimentat de jQuery, care poate ajuta la dezvoltarea aplicațiilor jQuery cu o singură pagină. A evoluat din prezentarea mea recentă, Construirea de aplicații cu o singură pagină folosind jQuery și ColdFusion, și va continua să evolueze pe măsură ce mă gândesc mai profund la acest tip de arhitectură de aplicație.

Polymer vă permite să construiți elemente încapsulate, reutilizabile, care funcționează la fel ca elementele HTML, pentru a le utiliza în construirea de aplicații web.

Matreshka este un cadru JavaScript mic și puternic la nivelul clientului, care vă permite să construiți aplicații pe o singură pagină cât mai simplu posibil.

Cadrul de aplicații în timp real (server Node.JS).

Meteor este o platformă open source completă pentru construirea de aplicații web și mobile în JavaScript pur.

Sencha Ext JS este cel mai cuprinzător cadru JavaScript MVC/MVVM pentru construirea de aplicații web multiplatformă bogate în funcții. Ext JS folosește funcțiile HTML5 pe browserele moderne, menținând în același timp compatibilitatea și funcționalitatea pentru browserele vechi.

Famous Framework este un nou cadru JavaScript pentru crearea de widget-uri și aplicații UI reutilizabile, componabile și interschimbabile. Echilibrează declarativ cu imperativ și funcțional cu stateful și este construit pe Famous Engine.

Cadrul Opa cu sursă deschisă pentru JavaScript face dezvoltarea web rapidă și sigură.

Vanilla JS este un cadru multiplatform rapid, ușor, pentru construirea de aplicații JavaScript incredibile și puternice.

MEDIE

MEAN este un cadru pentru un punct de pornire ușor cu aplicațiile bazate pe MongoDB, Node.js, Express și AngularJS. Este conceput pentru a vă oferi o modalitate rapidă și organizată de a începe să dezvoltați aplicații web bazate pe MEAN, cu module utile precum Mongoose și Passport, pre-grupate și configurate.

GWT este utilizat de multe produse de la Google, inclusiv Google AdWords și Google Wallet. Este open source, complet gratuit și folosit de mii de dezvoltatori entuziaști din întreaga lume.

Ample SDK este un cadru de interfață grafică JavaScript pentru browsere încrucișate pentru construirea de aplicații Internet bogate la nivelul clientului. Utilizează tehnologii XML (cum ar fi XUL, SVG sau HTML5) pentru aspectul UI, CSS pentru stilul UI și JavaScript cu DOM3 sau API-uri asemănătoare jQuery pentru logica aplicației.

Flatiron este un cadru adaptabil pentru construirea de aplicații web moderne. A fost construit de la zero pentru a fi utilizat cu JavaScript și Node.js.

P

P este un cadru mic folosit pentru a crea rețele browser-to-browser (spre deosebire de doar o conexiune).

scaleApp este un cadru JavaScript mic pentru aplicații de o pagină / aplicații de o singură pagină scalabile și care pot fi întreținute. Cadrul vă permite să creați cu ușurință aplicații web complexe.

MooTools este o colecție de utilități JavaScript concepute pentru dezvoltatorii JavaScript de nivel intermediar până la avansat. Vă permite să scrieți cod puternic și flexibil cu API-urile sale elegante, bine documentate și coerente.

Minified.js este o bibliotecă JavaScript la nivelul clientului, care este atât puternică, cât și mică. Oferă funcții asemănătoare jQuery (manipulare DOM, animație, evenimente, solicitări HTTP) și funcții utilitare (colecții, formatare date și numere, aritmetică a datei, șabloane) cu un singur API consistent.

Javelin este o bibliotecă Javascript frontend dezvoltată la Facebook. Subliniază strictețea și scalabilitatea pentru a încerca să rezolvăm, să prevenim sau să atenuăm unele dintre provocările pe care le-am întâlnit pe măsură ce Facebook a crescut. Javelin este utilizat în prezent de Facebook Mobile și Phabricator.

RightJS este un cadru JavaScript compact pentru dezvoltarea de aplicații web între browsere.

O bază mică pentru crearea de componente reactive cu interpolare, legare de date și pluginuri. Este simplu, flexibil și ușor de extins.

Sails este cel mai popular cadru MVC pentru Node.js.

midori este un cadru JavaScript ultra-ușor care își face treaba fără a vă sta în cale.

Microframework-ul Javascript MVC care face suficient.

O bibliotecă JavaScript pentru mai multe browsere pentru crearea de aplicații web și mobile bogate.

Un set de instrumente JavaScript care economisește timp și se adaptează cu procesul de dezvoltare. Oferă tot ce aveți nevoie pentru a construi o aplicație web. Utilitare lingvistice, componente UI și multe altele, toate într-un singur loc, concepute pentru a funcționa perfect împreună.

MochiKit este o suită de biblioteci JavaScript foarte documentată și bine testată, care vă va ajuta să faceți rahat rapid. Am luat toate ideile bune pe care le-am găsit de la Python-ul nostru, Objective-C etc. experiență și l-am adaptat la lumea nebună a JavaScript.

Ecou

Echo este o platformă pentru construirea de aplicații bazate pe web care abordează capacitățile clienților bogați. Aplicațiile sunt dezvoltate folosind un API orientat pe componente și bazat pe evenimente, eliminând nevoia de a face față naturii „pe pagină” a browserelor. Pentru dezvoltator, Echo funcționează la fel ca un set de instrumente de interfață cu utilizatorul.

Totul pentru construirea de aplicații web și mobile cu HTML5 și JavaScript.

Arhitectura Flux tradițională construită cu structuri de date ImmutableJS.

JWt este o bibliotecă Java pentru dezvoltarea aplicațiilor web.

PureMVC este un cadru ușor pentru crearea de aplicații bazate pe conceptul clasic de model, vizualizare și controler.

D3.js

D3.js este o bibliotecă JavaScript pentru manipularea documentelor bazate pe date. D3 vă ajută să dați viață datelor folosind HTML, SVG și CSS. D3 pune accent pe standardele web și combină componente puternice de vizualizare cu o abordare bazată pe date a manipulării DOM, oferind tu cel capabilitățile complete ale browserelor moderne, fără a vă lega de un cadru proprietar.

Handlebars.js este o extensie a limbajului de modelare Mustache creat de Chris Wanstrath. Handlebars.js și Mustache sunt ambele limbaje de șablon logic care mențin vizualizarea și codul separate așa cum știm cu toții că ar trebui să fie.

O placă simplă pentru rularea propriei biblioteci JavaScript precum jQuery, Zepto, Prototype etc.

Rialto (Rich Internet Application Toolkit) este o bibliotecă de widget-uri javascript bazată pe ajax. Deoarece este agnostic de tehnologie, poate fi încapsulat în componente grafice JSP, JSF, .Net, Python sau PHP.

Un cadru foarte modular, slab cuplat, fără cadru pentru construirea de aplicații JavaScript avansate.

Dozer este un sistem pentru dezvoltarea rapidă a serviciilor pentru a sprijini aplicațiile front-end.

AmplifyJS este un set de componente concepute pentru a rezolva problemele comune ale aplicațiilor web cu un API simplist.

Noder.io oferă un nucleu ușor și flexibil pentru a crea un API scalabil al unei lib, un modul, o aplicație sau un cadru. Noder.io este inspirat (printre altele) din Angular și Pimple.

abaaso este un cadru de aplicație JavaScript RESTful de clasă Enterprise modern, ușor.

O bază de proiect pentru construirea de aplicații JavaScript moderne.

SharepointPlus ($SP) este un API JavaScript pentru Sharepoint. Această bibliotecă oferă câteva funcții extinse pentru SharePoint în întregime pe partea client (nu necesită instalare de server). $SP vă va simplifica interacțiunile cu serviciile web Sharepoint și vă va ajuta să vă ocupați de formularele de listă.

Marionette este o bibliotecă de aplicații compozită pentru Backbone.js care își propune să simplifice construcția de aplicații JavaScript la scară largă. Este o colecție de modele comune de proiectare și implementare găsite în aplicații.

Revoltă

Riot aduce etichete personalizate tuturor browserelor, inclusiv IE8. Gândește-te la React + Polymer, dar cu o sintaxă plăcută și o curbă mică de învățare.

pager.js este o bibliotecă JavaScript bazată pe KnockoutJS și jQuery care oferă posibilitatea de a crea aplicații cu o singură pagină într-un mod declarativ.

CanJS

CanJS este o bibliotecă JavaScript care face dezvoltarea de aplicații complexe simplă și rapidă. Ușor de învățat, mic și modest pentru structura aplicației dvs., dar cu caracteristici moderne, cum ar fi etichete personalizate și legare bidirecțională. Crearea de aplicații este ușor și ușor de întreținut.

Soluție ușoară și puternică de legare a datelor + șabloane pentru construirea de aplicații web moderne.

Epoxy este o bibliotecă de date elegantă și extensibilă pentru Backbone.js.

OpenUI5 este o bibliotecă Open Source JavaScript UI, întreținută de SAP și disponibilă sub licența Apache 2.0. OpenUI5 vă permite să creați aplicații web pregătite pentru întreprindere, care răspund la toate dispozitivele, rulând pe aproape orice browser la alegere.

script.aculo.us vă oferă biblioteci JavaScript, ușor de utilizat, cu interfață de utilizator încrucișată pentru a vă face site-urile și aplicațiile web să zboare.

YUI este o bibliotecă JavaScript și CSS gratuită, open source, pentru construirea de aplicații web bogat interactive.

SmartClient combină cel mai bogat set de componente ale interfeței de utilizare pentru mai multe browsere din industrie cu un cadru de server Java pentru a oferi o soluție end-to-end pentru construirea de aplicații web de afaceri.

Backbone.js oferă structură aplicațiilor web, oferind modele cu legare cheie-valoare și evenimente personalizate, colecții cu un API bogat de funcții enumerabile, vizualizări cu gestionarea declarativă a evenimentelor și conectează totul la API-ul dvs. existent printr-o interfață JSON RESTful.

Cărămidă

Brick este o colecție de componente UI concepute pentru construirea ușoară și rapidă a interfețelor de utilizare a aplicațiilor web. Componentele Brick sunt construite folosind standardul Web Components pentru a permite dezvoltatorilor să descrie interfața de utilizare a aplicației lor folosind sintaxa HTML pe care o cunosc deja.

Coloana vertebrală

Spine este o bibliotecă MVC ușoară pentru construirea de aplicații web JavaScript. Spine vă oferă structură și apoi vă iese din cale, permițându-vă să vă concentrați asupra lucrurilor distractive: construirea de aplicații web minunate.

UIZE se pronunță „voi ochii” și este un cadru JavaScript OOP GRATUIT, puternic, open source pentru browsere, NodeJS și alte locuri JavaScript.

JavaScriptMVC este un cadru open-source care conține cele mai bune idei în dezvoltarea jQuery.

Agility.js este o bibliotecă MVC pentru Javascript care vă permite să scrieți cod de browser care poate fi întreținut și reutilizabil, fără suprasolicitarea detaliată sau infrastructurală găsită în alte biblioteci MVC.

Underscore este o bibliotecă JavaScript care oferă o întreagă mizerie de ajutoare de programare funcționale utile, fără a extinde niciun obiect încorporat.

Radian este un cadru scalabil AngularJS, perfect pentru proiecte cu mai mulți dezvoltatori.

Ractive a fost creat inițial la theguardian.com pentru a produce aplicații de știri. O aplicație tipică de știri este puternic interactivă, combină HTML și SVG și este dezvoltată sub presiune extremă a termenului limită.

Geddy

Cadrul web MVC original pentru Node – o modalitate simplă și structurată de a crea aplicații javascript full stack.

Locomotive este un cadru web pentru Node.js. Locomotiva acceptă modele MVC, rute RESTful și convenție peste configurație, în timp ce se integrează perfect cu orice bază de date și motor de șablon.

MontageJS este un cadru HTML5 elegant, open source, întreținut de Montage Studio, care rivalizează cu SDK-urile native, dar este mai ușor de învățat.

Chaplin este o arhitectură pentru aplicații JavaScript care utilizează biblioteca Backbone.js. Chaplin abordează limitările Backbone oferind o structură ușoară și flexibilă, care prezintă modele de design bine dovedite și cele mai bune practici.

Serenade.js este un cadru pe partea clientului, construit pe modelul MVC. Simplifică crearea de aplicații bogate pe partea clientului, eliberându-vă de a fi nevoit să mențineți DOM-ul la zi cu datele dvs. prin legături puternice de date.

Prototipul elimină complexitatea programării web pe partea clientului. Creat pentru a rezolva problemele din lumea reală, adaugă extensii utile mediului de scriptare a browserului și oferă API-uri elegante în jurul interfețelor neîndemânatice ale Ajax și Document Object Model.

pyjs

pyjs este o platformă de dezvoltare Rich Internet Application (RIA) atât pentru web, cât și pentru desktop. Cu pyjs puteți scrie aplicațiile web bazate pe JavaScript în întregime în Python.

jQWidgets oferă o soluție cuprinzătoare pentru construirea de site-uri web profesionale și aplicații mobile. Este construit în întregime pe standarde și tehnologii deschise precum HTML5, CSS, JavaScript și jQuery.

Rico este un cadru JavaScript open source utilizat pentru a crea aplicații web bogate, extrem de interactive. Rico se bazează pe Prototype Javascript Framework și este lansat sub licența Apache.

eyeballs.js este o bibliotecă Javascript subțire concepută pentru a sta deasupra unui cadru javascript, cum ar fi jQuery sau Prototype.

Choco

Un cadru web Javascript delicios fabricat în Belgia!

Cadrul Junction cu sursă deschisă este un cadru web MVC de sincronizare cu convenții peste configurație pentru JavaScript.

KineticJS este o bibliotecă HTML5 Canvas rapidă, robustă, care nu mai este întreținută. Ultima versiune stabilă este v5.1.0 și este destul de solidă.

Rendr

Rendr este o bibliotecă mică care vă permite să rulați aplicațiile Backbone.js fără probleme atât pe client, cât și pe server. Permiteți serverului dvs. web să difuzeze pagini HTML complet formate către orice link profund al aplicației dvs., păstrând în același timp senzația de captură a unei aplicații MVC tradiționale Backbone.js la nivelul clientului.

TerrificJS este o bucată de cod îngrijită și inteligentă, care vă permite să vă modularizați codul frontend bazându-vă exclusiv pe convențiile de denumire.

Atom

Atom este un cadru JavaScript compact, orientat pe browsere moderne, care permite să suporte o listă destul de largă de caracteristici fără a păstra o mulțime de cruft necesară pentru a le implementa în browserele vechi.

Există multe cadre și biblioteci disponibile în dezvoltarea front-end în aceste zile. Unele dintre ele sunt bune, altele nu. Adesea ne place doar un anumit principiu sau o anumită sintaxă. Adevărul este că nu există un instrument universal. Acest articol este despre un cadru viitor - un cadru care nu există încă. Am rezumat avantajele și dezavantajele unor cadre JavaScript populare și am îndrăznit să visez la soluția perfectă.

Abstracțiile sunt periculoase

Tuturor ne place instrumente simple. Complexitatea ucide. Ne face viața mai dificilă și curba de învățare mai abruptă. Programatorii trebuie să știe cum funcționează lucrurile. Altfel se simt nesiguri. Dacă lucrăm cu un sistem complex, există un decalaj mare între „folosesc asta” și „știu cum funcționează”. De exemplu, un cod ca acesta ascunde complexitatea:

Var page = Framework.createPage(( "tip": "acasă", "vizibil": adevărat ));

Să presupunem că acesta este un cadru real. Sub capotă, createPage creează o nouă clasă afişa care încarcă șablonul de pe home.html. În funcție de valoarea parametrului vizibil, inserăm (sau nu) elementul DOM creat în arbore. Acum imaginați-vă în pielea dezvoltatorului. Citim în documentație pe care o creează această metodă noua pagina cu un șablon dat. Nu știm detaliile specifice pentru că este o abstractizare.

Unele dintre cadrele din zilele noastre chiar au nu unul, ci mai multe straturi de abstracții. Uneori, pentru a folosi un cadru corect, trebuie să cunoaștem detaliile. Abstracția, în general, este un instrument puternic, este un înveliș pentru funcționalitate. Acesta încapsulează implementări concrete. Dar abstracția trebuie folosită cu prudență, altfel poate duce la acțiuni care nu pot fi urmărite.

Ce se întâmplă dacă am rescrie exemplul de mai sus astfel:

Var page = Framework.createPage(); pagina .loadTemplate("home.html") .appendToDOM();

Acum dezvoltatorul știe ce se întâmplă. Crearea șabloanelor și inserarea în arbore sunt acum efectuate folosind diferite metode API. Deci programatorul poate face ceva între aceste apeluri și deține controlul asupra situației.

Funcția ViewModel(first, last) ( this.firstName = ko.observable(first); this.lastName = ko.observable(last); ) ko.applyBindings(new ViewModel("Planeta", "Pământ"))

Declaram modelul si il initializam singuri. Dar în AngularJS este puțin diferit:

Funcția TodoCtrl($scope) ( $scope.todos = [ ( „text”: „învățați unghiular”, „terminat”: adevărat ), ( „text”: „construiți o aplicație unghiulară”, „terminat”: fals ) ]; )

Din nou, ne declarăm clasa, dar nu o rulăm. Spunem doar că acesta este controlerul nostru, iar cadrul decide ce să facă cu el. Putem fi confuzi de acest lucru deoarece am pierdut punctele cheie - punctele cheie de care avem nevoie pentru a desena o diagramă a modului în care funcționează aplicația.

Lucrul cu DOM

Orice am face, trebuie să interacționăm cu DOM. Modul în care facem acest lucru este foarte important, de obicei fiecare modificare a nodurilor arborelui dintr-o pagină implică o redimensionare sau o redesenare, iar acestea pot fi operațiuni foarte costisitoare. Să luăm această clasă ca exemplu:

Var Framework = ( "el": null, "setElement": function(el) ( this.el = el; return this; ), "update": function(list) ( var str = "

    "; pentru (var i = 0; i< list.length; i++) { var li = document.createElement("li"); li.textContent = list[i]; str += li.outerHTML; } str += "
"; this.el.innerHTML = str; returnează aceasta; ) )

Acest cadru mic generează o listă neordonată cu datele necesare. Trecem elementul DOM unde ar trebui să fie plasată lista și apelăm funcția de actualizare, care afișează datele pe ecran.

Framework .setElement(document.querySelector(".content")) .update(["JavaScript", "este", "superb"]);

Iată ce am scos din asta:

Pentru a demonstra partea slabăÎn această abordare, vom adăuga un link către pagină și îi vom atribui un handler de evenimente de clic. Funcția va apela din nou metoda de actualizare, dar cu elemente de listă diferite:

Document.querySelector("a").addEventListener("clic", function() ( Framework.update(["Web", "este", "superb"]); ));

Trecem aproape aceleași date, doar primul element al matricei s-a schimbat. Dar datorită faptului că folosim innerHTML , redesenarea are loc după fiecare clic. Browserul nu știe că trebuie doar să schimbăm prima linie. Redenează întreaga listă. Să lansăm DevTools ale browserului Opera și să începem profilarea. Consultați acest GIF animat pentru a vedea ce se întâmplă:


Vă rugăm să rețineți că după fiecare clic, tot conținutul este redesenat. Aceasta este o problemă, mai ales dacă tehnica este folosită în multe locuri de pe pagină.

Mult mai bine la amintirea elementelor create

  • și să le schimbe doar conținutul. Astfel, nu schimbăm întreaga listă, ci doar nodurile sale fii. Prima modificare pe care o putem face este în setElement:

    SetElement: function(el) ( this.list = document.createElement("ul"); el.appendChild(this.list); return this; )

    Acum nu mai trebuie să stocăm o referință la elementul container. Este suficient să creezi un element

      și adaugă-l o dată în copac.

      Logica care îmbunătățește performanța se află în cadrul metodei de actualizare:

      „actualizare”: funcție(lista) (pentru (var i = 0; i< list.length; i++) { if (!this.rows[i]) { var row = document.createElement("LI"); row.textContent = list[i]; this.rows[i] = row; this.list.appendChild(row); } else if (this.rows[i].textContent !== list[i]) { this.rows[i].textContent = list[i]; } } if (list.length < this.rows.length) { for (var i = list.length; i < this.rows.length; i++) { if (this.rows[i] !== false) { this.list.removeChild(this.rows[i]); this.rows[i] = false; } } } return this; }

      Prima buclă for iterează prin toate liniile trecute și creează elemente dacă este necesar

    • . Referințele la aceste elemente sunt stocate în matricea this.rows. Și dacă există deja un element acolo la un anumit index, cadrul își actualizează proprietatea textContent doar dacă este posibil. A doua buclă elimină elemente dacă dimensiunea matricei este mai mare decât numărul de șiruri trecute.

      Iată rezultatul:


      Browserul redesenează doar partea care s-a schimbat.

      Vestea bună este că cadrele precum React funcționează deja corect cu DOM. Browserele devin mai inteligente și folosesc trucuri pentru a reda cât mai puțin posibil. Dar totuși, este mai bine să țineți cont de acest lucru și să verificați cum funcționează cadrul pe care îl alegeți.

      Sper că în viitorul apropiat nu va mai trebui să ne gândim la astfel de lucruri, iar cadrele se vor ocupa singure de asta.

      Gestionarea evenimentelor DOM

      Aplicațiile JavaScript interacționează de obicei cu utilizatorul prin evenimente DOM. Elementele de pe pagină trimit evenimente, iar codul nostru le procesează. Iată o bucată de cod în Backbone.js care efectuează o acțiune dacă utilizatorul interacționează cu pagina:

      Var Navigation = Backbone.View.extend(( „evenimente”: ( „click .header.menu”: „toggleMenu” ), „toggleMenu”: function() ( // ... ) ));

      Deci, ar trebui să existe un element corespunzător selector.header.menu și atunci când utilizatorul face clic pe el, ar trebui să afișăm sau să ascundem meniul. Problema acestei abordări este că legăm obiectul JavaScript la un anumit element DOM. Dacă vrem să edităm marcajul și să înlocuim .menu cu .main-menu , va trebui să edităm și JavaScript. Cred că controlorii ar trebui să fie independenți și nu ar trebui să fie strâns cuplati cu DOM.

      Prin definirea funcțiilor, delegăm sarcini unei clase JavaScript. Dacă aceste sarcini sunt handlere de evenimente DOM, este logic să le creați din HTML.

      Îmi place modul în care AngularJS gestionează evenimentele.

      click pe mine

      go este o funcție înregistrată în controlerul nostru. Dacă respectăm acest principiu, nu trebuie să ne gândim la selectoarele DOM. Pur și simplu aplicăm comportamentul direct nodurilor HTML. Această abordare este bună, deoarece vă scutește de a juca plictisitoare cu DOM.

      În general, m-aș bucura dacă acest tip de logică ar fi în interiorul HTML. Interesant este că am petrecut mult timp convingând dezvoltatorii să separe conținutul (HTML) și comportamentul (JavaScript), i-am învățat să încorporeze stiluri și scripturi direct în HTML. Dar acum văd că ne poate economisi timp și ne poate face componentele mai flexibile. Desigur, nu mă refer la așa ceva:

      text banner

      Vorbesc despre atribute vizuale care controlează comportamentul unui element. De exemplu:

      Acest lucru nu ar trebui să arate ca programarea JavaScript în HTML, ci mai degrabă configurarea configurației.

      Managementul dependenței

      Managementul dependenței este o sarcină importantă în procesul de dezvoltare. De obicei depindem de funcții externe, module sau biblioteci. De fapt, creăm dependențe tot timpul. Nu scriem totul într-o singură metodă. Împărțim sarcinile aplicației în diferite funcții și apoi le conectăm. În mod ideal, dorim să încapsulăm logica în module care se comportă ca niște cutii negre. Ei știu doar acele detalii care se referă la munca lor și nimic altceva.

      RequireJS este unul dintre instrumentele populare de rezolvare a dependențelor. Ideea este că codul este învelit într-o închidere care trece modulele necesare:

      Require(["ajax", "router"], function(ajax, router) ( // … ));

      Acest exemplu de funcție necesită două module: ajax și router. Metoda magic require citește matricea transmisă și apelează funcția noastră cu argumentele necesare. Definiția routerului arată cam așa:

      // router.js define(["jquery"], function($) ( return ( "apiMethod": function() ( // ... ) ) ));

      Rețineți că există o altă dependență - jQuery. Un alt detaliu important: trebuie să returnăm API-ul public al modulului nostru. În caz contrar, codul care solicită modulul nostru nu va putea accesa funcționalitatea în sine.

      AngularJS merge puțin mai departe și ne oferă ceva numit fabrică. Ne înregistrăm dependențele acolo și ele devin magice disponibile în controlere. De exemplu:

      MyModule.factory("greeter", function($window) ( return (" salut": function(text) ( $window.alert(text); ) ); )); funcția MyController($scope, greeter) ( $scope.sayHello = function() ( greeter.greet("Hello World"); )

      În general, această abordare ușurează munca. Nu trebuie să folosim funcții precum require pentru a ajunge la dependență. Tot ceea ce este necesar este să tastați cuvintele corecte în lista de argumente.

      Bine, ambele metode de injectare a dependenței funcționează, dar fiecare necesită un stil de codare diferit. În viitor, aș dori să văd cadre care să elimine această limitare. Ar fi mult mai elegant să folosiți metadate atunci când creați variabile. Acum limbajul nu face posibil acest lucru. Dar ar fi grozav dacă ai putea face asta:

      Var router:;

      Dacă dependența este situată lângă definiția variabilei, atunci putem fi siguri că această dependență este injectată doar dacă este necesară. RequireJS și AngularJS, de exemplu, funcționează la nivel funcțional. Adică, se poate întâmpla să utilizați un modul doar în anumite cazuri, dar inițializarea și implementarea acestuia se vor întâmpla întotdeauna. În plus, putem defini dependențe doar într-un loc strict definit. Suntem atașați de asta.

      Șabloane

      Folosim adesea șabloane. Și facem acest lucru din cauza necesității de a separa datele și marcajul HTML. Cum funcționează cadrele moderne cu șabloane? Iată cele mai comune abordări:

      Modelul este definit în Hello, !

      Această abordare este adesea folosită deoarece șabloanele sunt în HTML. Acest lucru pare natural și are sens, deoarece HTML are etichete. Browserul nu redă conținutul elementelor, iar acest lucru nu poate distorsiona aspectul paginii.

      Șablonul este încărcat prin AJAX Backbone.View.extend(( „șablon”: „șablon-my-view-”, „render”: function() ( $.get("/templates/" + this.template + ".html ", function(template) ( var html = $(template).tmpl(); ) ));

      Ne punem codul în extern fișiere HTMLși a evitat utilizarea etichetelor suplimentare. Dar acum avem nevoie de mai multe solicitări HTTP și acest lucru nu este întotdeauna adecvat (cel puțin până când suportul HTTP2 devine mai larg).

      Șablonul face parte din markup - cadrul îl primește din arborele DOM. Această metodă se bazează pe HTML deja generat. Nu trebuie să facem solicitări HTTP suplimentare, să creăm fișiere noi sau .

      Șablonul face parte din markupul paginii var HelloMessage = React.createClass(( render: function() ( // Vă rugăm să rețineți: următoarea linie de cod // nu este JavaScript valid. return Hello (this.props.name); ) ));

      Această abordare a fost introdusă în React, care utilizează propriul analizor care transformă părți nevalide ale JavaScript în cod valid.

      Șablon - nu HTML

      Unele cadre nu folosesc HTML deloc direct. În schimb, șabloanele sunt stocate ca JSON sau YAML.

      În sfârșit, despre șabloane

      Bine, ce urmează? Mă aștept ca, în cadrul viitorului, să privim datele separat și markupul separat. Ca să nu se intersecteze. Nu vrem să ne ocupăm de încărcarea șirurilor de caractere în HTML sau de transmiterea datelor către funcții speciale. Vrem să atribuim valori variabilelor și să facem ca DOM-ul să se actualizeze. Comun legare în două sensuri nu ar trebui să fie ceva în plus, ar trebui să fie obligatoriu funcționalitate de bază.

      În general, comportamentul AngularJS este cel mai apropiat de ceea ce se dorește. Citește șablonul din conținutul paginii furnizate și implementează legarea magică în două sensuri. Cu toate acestea, nu este încă perfect. Uneori există pâlpâire. Acest lucru se întâmplă atunci când browserul redă HTML, dar mecanismele de încărcare AngularJS nu au început încă. În plus, AngularJS folosește cec murdar dacă s-a schimbat ceva. Această abordare este uneori foarte costisitoare. Sperăm că toate browserele vor accepta Object.observe în curând și legarea va fi mai bună.

      Mai devreme sau mai târziu, fiecare dezvoltator se confruntă cu problema șabloanelor dinamice. Cu siguranță, există părți în aplicațiile noastre care apar după descărcare. Cu cadrul ar trebui să fie ușor. Nu ar trebui să ne facem griji cu privire la solicitările AJAX, iar API-ul ar trebui să fie astfel încât procesul să pară sincron.

      Modularitate

      Îmi place când opțiunile pot fi activate și dezactivate. Și dacă nu folosim ceva, de ce să-l păstrăm în codul proiectului? Ar fi bine dacă framework-ul ar avea un builder care să genereze o versiune cu doar modulele necesare. Ca, de exemplu, YUI, care are un configurator. Selectăm modulele pe care le dorim și obținem un fișier JavaScript redus și gata de utilizat.

      Chiar și așa, există cadre care au ceva numit miez. Pe lângă acesta, putem folosi un pachet de plugin-uri (sau module). Dar am putea îmbunătăți acest lucru. Procesul de selectare a funcțiilor dorite nu trebuie să implice descărcarea fișierelor. Nu trebuie să le includem manual pe pagină. Acest lucru trebuie cumva să facă parte din codul cadru.

      Pe lângă capacitățile de instalare adecvate, un mediu ideal ar trebui să permită extensibilitatea. Ar trebui să putem scrie propriile plugin-uri și să le împărtășim cu alți dezvoltatori. Cu alte cuvinte, mediul ar trebui să fie propice pentru scrierea modulelor. Este imposibil să creezi o comunitate puternică fără existența unor condiții adecvate pentru dezvoltatori.

      Deschideți API

      Majoritatea cadrelor oferă un API pentru funcționalitatea lor de bază. Dar folosind aceste API-uri putem ajunge doar la acele părți pe care furnizorii au decis că sunt necesare pentru noi. Și aici pot fi utile hack-urile. Vrem să obținem ceva, dar nu există instrumente potrivite pentru asta. Și trebuie să folosești trucuri și să faci un ocol. Luați în considerare acest exemplu:

      Var Framework = function() ( var router = nou Router(); var factory = nou ControllerFactory(); return ( "addRoute": function(path) ( var rData = router.resolve(path); var controller = factory.get) (rData.controllerType); router.register(cale, controller.handler); var AboutCtrl = Framework.addRoute("/about");

      Acest cadru are un router încorporat. Definim calea și controlerul este inițializat automat. Când un utilizator vizitează o anumită adresă URL, routerul apelează metoda de gestionare a constructorului. Acest lucru este grozav, dar ce se întâmplă dacă trebuie să executăm o funcție JavaScript mică atunci când o adresă URL este potrivită? Din anumite motive, nu dorim să creăm un controler suplimentar. Acest lucru nu va funcționa cu API-ul actual.

      Am putea să o facem diferit, de exemplu astfel:

      Var Framework = function() ( var router = nou Router(); var factory = nou ControllerFactory(); return ( "createController": function(path) ( var rData = router.resolve(path); return factory.get(rData); .controllerType); ) "addRoute": function(path, handler) ( router.register(path, handler); ) ) var AboutCtrl = Framework.createController(( "tip": "despre" )); Framework.addRoute("/about", AboutCtrl.handler);

      Rețineți că routerul nu iese în afară. Nu este vizibil, dar acum putem controla atât crearea controlerului, cât și înregistrarea căii în router. Desigur, opțiunea propusă este potrivită pentru sarcina noastră specifică. Dar poate fi prea complicat, deoarece controlerele trebuie create manual. Când dezvoltăm API-uri, ne ghidăm după principiul responsabilității și raționamentului unic fă un lucru și fă-l bine. Văd tot mai multe cadre care își descentralizează funcționalitatea. Ele descompun tehnicile complexe în părți mai mici. Și acesta este un semn bun, sper că mai multe cadre vor face acest lucru în viitor.

      Testabilitate

      Nu este nevoie să vă convingeți să scrieți teste pentru codul dvs. Ideea este nu numai că trebuie să scrieți teste, ci și că trebuie să scrieți cod care poate fi acoperit cu teste. Uneori, acest lucru este incredibil de dificil și necesită timp. Sunt convins că dacă nu scriem teste pentru ceva, chiar și pentru ceva foarte mic, atunci aici vor începe să apară erori în aplicație. Acest lucru este valabil mai ales pentru JavaScript la nivelul clientului. Mai multe browsere, mai multe sisteme de operare, noi specificații, noi caracteristici și polifillurile lor - există o mulțime de motive pentru a începe să practici dezvoltarea bazată pe teste.

      Mai este ceva ce vom obține din teste. Nu numai că ne asigurăm că cadrul (aplicația) nostru funcționează astăzi. Ne asigurăm că va funcționa mâine și poimâine. Dacă există o caracteristică nouă pe care o introducem în cod, scriem teste pentru aceasta. Și este foarte important să ne asigurăm că aceste teste sunt trecute. Dar este, de asemenea, important ca testele anterioare să fie trecute. Astfel ne asigurăm că nimic nu este spart.

      Mi-ar plăcea să văd mai multe utilități și metode standardizate de testare. Aș dori să folosesc un singur utilitar pentru a testa toate cadrele. De asemenea, ar fi bine dacă testarea ar fi inclusă cumva în procesul de dezvoltare. Ar trebui să acordați mai multă atenție serviciilor precum Travis CI. Ele acționează ca un indicator nu numai pentru programatorul care face modificările, ci și pentru alți contribuitori.

      Încă lucrez cu PHP. Am avut de-a face cu cadre precum WordPress. Și mulți oameni m-au întrebat cum îmi testez aplicațiile: ce cadru folosesc, cum rulez teste, dacă am chiar componente. Adevarul este ca nu testez nimic. Și de aceea nu am componentele. Același lucru este valabil și pentru unele cadre JavaScript. Unele dintre părțile lor sunt dificil de testat, deoarece nu sunt defalcate în componente. Dezvoltatorii ar trebui să gândească și în această direcție. Da, ne oferă un cod inteligent, elegant și funcțional. Dar codul trebuie să fie și testabil.

      Documentare

      Sunt sigur că fără o documentare bună, orice proiect va eșua mai devreme sau mai târziu. O grămadă de cadre și biblioteci sunt lansate în fiecare săptămână. Documentația este primul lucru pe care îl vede un dezvoltator. Nimeni nu vrea să petreacă ore întregi încercând să afle ce face un anumit utilitar și ce capabilități are. Pur și simplu enumerarea funcționalității de bază nu este suficientă. Mai ales pentru un cadru mare.

      Aș împărți documentația bună în trei părți:

      • Ce pot face - documentația ar trebui să învețe utilizatorul și ar trebui să o facă corect. Indiferent cât de cool sau puternic este cadrul nostru, trebuie explicat. Unii preferă să se uite la videoclipuri, alții să citească articole. În orice caz, dezvoltatorul trebuie să arate totul, de la elementele de bază până la părțile complexe ale cadrului.
      • Documentația API este de obicei peste tot. O listă completă a tuturor metodelor API publice, ce parametri au și ce returnează. Poate câteva exemple de utilizare.
      • Cum funcționează - de obicei, această secțiune nu este în documentație. Ei bine, dacă cineva ar putea explica structura cadrului, chiar și o simplă diagramă a funcționalității de bază și a relațiilor sale ar ajuta deja. Acest lucru ar face codul transparent. Acest lucru i-ar ajuta pe acei dezvoltatori care doresc să facă propriile modificări.
      Concluzie

      Viitorul este, desigur, greu de prezis. Dar putem visa la asta! Este important să vorbim despre ceea ce ne așteptăm și ce dorim de la cadrele JavaScript! Dacă aveți comentarii, sugestii sau doriți să vă împărtășiți gândurile, scrieți pe Twitter cu hashtag-ul

      Continuăm comparația dintre principalele cadre Javascript pentru 2011. Am identificat, folosind metode strict științifice, evitând subiectivitatea și expresismul inutil, chiar acești lideri mondiali, ei bine, astăzi îi vom privi direct și îndeaproape - cele șase biblioteci de javascript de top în ordinea descrescătoare a popularității lor.

      locul 1:

      Dimensiune: 155Kb (versiunea minimă - 72Kb), licență: MIT și GNU GPL, ultima versiune: 1.6 (3 mai 2011)

      jQuery este cea mai populară și răspândită bibliotecă JavaScript, concentrându-se pe interacțiunea dintre JavaScript și HTML. jQuery oferă, de asemenea, un API convenabil pentru lucrul cu Ajax. Acest cadru a fost unul dintre primele care au fost implementate cu succes. Un alt secret al popularității acestei biblioteci este implementarea unui echilibru foarte consistent între funcționalitate bună și, în același timp, o încercare de succes de a crea un nucleu universal destul de compact. Dacă adăugăm aici capacitatea de compromis de a extinde foarte simplu funcționalitatea bibliotecii de bază prin includerea de plugin-uri suplimentare (al căror număr depășește acum 1000) - atunci rezultatul este un produs cu adevărat universal, flexibil și rapid.

      Pentru cei care doresc să obțină efecte UI mai avansate (UI, interfață cu utilizatorul), cum ar fi suport pentru scalare, sortare, glisare și plasare și widget-uri standard precum marcaje, glisor, bară de progres etc., se recomandă utilizarea bibliotecii aferente , care este specializată în special în efecte grafice și crearea complexă interfata utilizator.

      În general, jQuery este foarte benefic pentru proiectele de dimensiuni mici și mijlocii, dar în curs de dezvoltare proiecte majore poate fi problematică deoarece duce la deficite de proiectare, deși este foarte productivă datorită conținutului și codului său simplu. Ei bine, popularitatea produsului este evidențiată de faptul că foștii concurenți, de exemplu xajax (xajaxproject.org), ei înșiși trec în cele din urmă la utilizarea jQuery, Microsoft urmează să popularizeze partajarea jQuery cu tehnologiile sale, iar Nokia își anunță intenția de a integra jQuery pentru widget-urile sale mobile.

      Digg, BBC, Dell, IsoHunt, Break.com, TinyPic, eMusic, Box.net, Yandex Maps.

      Cuvinte cheie pentru SEO: meniu jquery, oygukn, exemple jquery ajax, referință javascript, oygukn

      locul 2:

      Dimensiune: 278Kb (versiunea minimă - 56Kb), licență: MIT, ultima versiune: 1.7 (22 noiembrie 2010)


      Al doilea cadru js cel mai popular, care simplifică foarte mult lucrul cu Ajax și cu alte funcții js avansate. În ciuda disponibilității sale ca bibliotecă de sine stătătoare, este cel mai des folosită de programatori împreună cu Ruby on Rails, Tapestry, script.aculo.us și Rico. Adesea, integrarea strânsă cu larg răspândită Ruby on Rails este cea care se încearcă să explice popularitatea acestuia (deși jQuery deja discutat la nivel de plugin poate interacționa și cu multe platforme populare, de exemplu, cu același Ruby on Rails sau PHP (jquery. hohli.com)).

      Din punct de vedere al designului, cadrul este foarte convenabil pentru proiectele de dimensiuni medii, deoarece oferă o modalitate rudimentară de a emula OOP clasic, pe lângă funcționalitatea sa simplă. Performanța sa este oarecum instabilă, adică În unele operațiuni poate fi rapid, în altele performanța scade simțitor. Prototype este unul dintre puținele cadre care nu includ componente UI sau îmbunătățiri UX - pentru a utiliza astfel de efecte, este recomandat să folosiți biblioteca sa copil - script.aculo.us (sau Scripty2), care adaugă un număr mare de efecte grafice, suport pentru glisare și plasare, glisoare, editori Ajax etc.

      Exemple de site-uri cunoscute bazate pe acest cadru: CNN, The New York Times, Apple, Fox News Channel, Last.fm, Twitter, Hakia.

      Cuvinte cheie pentru SEO: script java, descărcare prototip, javascript js, document js, script js, comparație cadru

      locul 3:

      Dimensiune: 101Kb (versiunea minimă - 60Kb), licență: MIT, ultima versiune: 1.3 (11 octombrie 2011)


      MooTools este un cadru modular, orientat pe obiecte. Este foarte asemănător în abordarea sa asupra designului de bază cu jQuery și Prototype - nu include controale și widget-uri UI, limitându-se la un set minim de efecte și capabilități.

      Aceasta este o bibliotecă JavaScript foarte bună - agilă, mică, împărțită în multe module mici, bine documentată. În opinia noastră unanimă, codul de aici este mai clar și mai bine organizat în comparație cu liderul - jQuery. Modularitatea este un mare plus separat: este posibil să compilați biblioteca necesară pentru un anumit scop - deși economiile în kiloocteți în comparație cu jQuery sunt practic nimic. Există o opinie stereotipă că începătorilor le este mai bine să folosească jQuery, iar programatorilor cu experiență le este mai bine să utilizeze MooTools, dar credem că MooTools este mai bine pentru ambele.

      În plus, acest cadru conține un plugin foarte interesant MooTools.More.js, care este de fapt ceva mai mult decât un simplu plugin: vă permite să extindeți foarte mult capacitățile bibliotecilor terțe și, în același timp, are suplimente foarte interesante. aplicații pentru manipularea matricelor și a datelor, hashemi, șiruri de caractere etc. Am fost foarte impresionați de capacitatea de a localiza sintaxa engleză a limbajului mootools în sine în orice limbă națională, ceea ce vă permite să programați în ea cât mai confortabil posibil, de exemplu, în rusă.

      Exemple de site-uri cunoscute bazate pe acest cadru: MooTools este folosit în Joomla CMS, deci există o mulțime de astfel de site-uri. Folosit și de (World Wide Web Consortium)

      Cuvinte cheie pentru SEO: mootools joomla, mootools jquery, mootools js

      locul 4:


      Biblioteca Yahoo! Biblioteca UI (YUI) este un set de utilități și controale scrise în JavaScript și CSS pentru crearea de aplicații web interactive folosind scripting DOM, tehnici DHTML și Ajax. Există două tipuri de componente disponibile în acest cadru: utilități și controale. Utilitățile simplifică dezvoltarea browserului legat de DOM, DHTML și Ajax. Controalele sunt un set de elemente vizuale gata făcute, extrem de interactive, pentru proiectarea paginilor web. Toate aceste elemente sunt create și funcționează numai pe partea clientului și nu necesită o reîmprospătare a paginii pentru a le schimba. Întreaga bibliotecă este distribuită sub o licență BSD și este gratuită pentru toți utilizatorii. YUI a fost creat în comun de ingineri de top Yahoo, precum și de dezvoltatori din întreaga lume. Acum este unul dintre cadrele js de top, complet gata pentru utilizare industrială, unde componentele UI și UX foarte avansate sunt integrate într-un întreg într-o singură livrare, formând un produs complet complet, independent și universal. Dacă adăugăm la aceasta licența sa foarte liberală, atunci popularitatea pe care a câștigat-o pe bună dreptate această bibliotecă este de înțeles, mai ales în evoluțiile comerciale și numeroasele bifurcări unde a fost luată ca bază.

      Exemple de site-uri cunoscute bazate pe acest cadru: Yahoo! Cumpărături, Bebo, ImageShack, LinkedIn, Walmart.com.

      Cuvinte cheie pentru SEO: descărcați yui, nfrschsch

      locul 5:

      Dimensiune: 502Kb (versiunea minimă - 84Kb), licență: GPLv3 și comercial, cea mai recentă versiune: 4.0 (26 aprilie 2011)


      Proiectul a început ca o încercare de a extinde programul Yahoo! Interfață cu utilizatorul, dar în acest stadiu este deja un proiect complet original, practic fără legătură cu YUI. Forța motrice, fondatorul și liderul permanent al proiectului rămâne Jack Slotsum, un cunoscut specialist în comunitatea de programare JavaScript.

      ExtJS nu este cel mai performant cadru disponibil, ci principalul trăsătură distinctivă prin faptul că oferă cel mai apropiat mediu de programare clasică, implementând mijloace grafice foarte avansate de afișare și interacțiune cu utilizatorul într-un mediu Web 2.0. Începând cu versiunea Ext JS 3.0, biblioteca este împărțită logic în două părți: Ext Core (un set de funcții JavaScript care vă permite să creați pagini web dinamice cu procesare unificată în diferite browsere și distribuite sub o licență MIT) și Ext JS (un set de widget-uri pentru crearea de interfețe de utilizator dublă cu licență GPL v3 sau licență comercială).

      În general, ExtJS face o impresie foarte favorabilă - acest cadru are capacități grafice foarte bune. Aici linia dintre aplicațiile web și desktop devine din ce în ce mai subțire.

      Cuvinte cheie pentru SEO: ext download, ext 4, ext js, ext 3, ext 2, ext yst pfdtltybz

      locul 6:

      Dimensiune: 123Kb (versiunea minimă - 65Kb), licență: BSD și AFL, ultima versiune: 1.6.0 (15 martie 2011)


      Un alt exemplu din lista de cadre populare, care, pe lângă faptul că repetă în mare măsură avantajele analogilor săi, are și propriile sale caracteristici. Printre cele mai importante, aș dori să menționez o încercare foarte serioasă de a obține o independență completă față de fiecare interpret JS specific, pentru care dezvoltatorii fac pur și simplu o treabă titanică de testare și găsire a celor mai universale și simple soluții. Prin urmare, sfera de aplicare a acestui cadru este cât mai larg posibil: acestea nu sunt doar soluții obișnuite pe partea clientului, ci și pe partea serverului și a computerelor desktop - oriunde este posibil să rulați JavaScript. A doua caracteristică tehnică importantă a Dojo este suportul pentru designul cu mai multe puncte de intrare, ceea ce îi oferă multe avantaje tehnice evidente. Aș dori să menționez, de asemenea, Extensiile Dojo pentru Adobe AIR, concepute pentru a ajuta dezvoltatorii să folosească întregul potențial al platformei AIR în aplicațiile care utilizează setul de instrumente Dojo.

      Exemple de site-uri cunoscute bazate pe acest cadru: Dogo Toolkit este utilizat în mod activ în celebra extensie PHP - Zend Framework, așa că există o mulțime de astfel de site-uri.

      Cuvinte cheie pentru SEO: descărcați ghid detaliat dojo, setul de instrumente dojo zend dojo, exemple de dojo

      În ultima parte a acestui opus, nu mă voi mai uita la lideri, ci pur și simplu la cadre foarte promițătoare. Ca întotdeauna în articolele mele, încerc să mă uit nu numai la picioarele mele, în timp ce afirm uneori fapte banale, ci și puțin înainte - privind, dacă este posibil, în viitor. Din acest punct de vedere, este dată concluzia mea filosofică suplimentară Top 3 + pe această temă (în special pentru programatorii tineri js).

      Dacă dezvoltați aplicații web în JavaScript, atunci utilizați deja cadre pentru aceasta. Când utilizați cadre, nu trebuie să vă amintiți bucăți mari de cod, dar puteți utiliza biblioteci, vă puteți conecta componentele necesareși folosiți modele. Mulți oameni cred că jQuery este un cadru JavaScript. Dar jQuery nu este un cadru cu drepturi depline, este o bibliotecă, deși cea mai veche și cea mai populară. Astăzi nu vom vorbi despre jQuery.

      În articolul de astăzi, ne vom uita la o listă a celor mai populare 10 cadre JS care sunt utilizate în dezvoltarea aplicațiilor web.

      AngularJS

      AngularJS este o platformă de dezvoltare de aplicații web open source care a fost introdusă de Google în 2009.

      AngularJS este conceput pentru aplicații web dinamice, cu folosind HTML pentru pagini web statice. Practic, extinde HMTL și implementează caracteristici precum legarea profundă, depanarea, manipularea automată a DOM și validarea formularului pe partea client fără a utiliza cod JavaScript suplimentar.

      Cu acest cadru, puteți crea elemente HTML noi, puteți utiliza „componente” pentru a crea și puteți salva fragmente de cod pentru utilizare ulterioară. De asemenea, are o mulțime de instrumente pentru tot felul de teste.

      Deși pentru un începător poate fi dificil să stăpânească această platformă din cauza tot felul de directive, componente, injecții etc.

      ReactJS este un cadru JavaScript excelent lansat în 2013 de Instagram și Facebook. Facilitează crearea de aplicații dinamice complexe și la scară largă. Vorbim aici despre redarea de top a interfețelor de înaltă performanță (și complexe). Vă amintiți cum JavaScript a devenit rapid un limbaj pe partea serverului cu node.js? Și cu React, puteți dezvolta aplicații atât pentru partea client, cât și pentru server.

      React crește rapid în popularitate, chiar dacă este relativ nou.

      Ember.js

      Acesta este unul dintre cele mai populare cadre JavaScript MVC. A apărut în 2011 ca sursă deschisă. Poate fi folosit pentru a crea aplicații web scalabile cu o singură pagină destul de ușor.

      În domeniul legării de date în două sensuri, Ember este similar cu Angular. De asemenea, face lucrări de randare DOM de top pe partea de server. Deși, în general, este mai ușor de utilizat în comparație cu Angular.

      BackboneJS

      BackboneJS este folosit de Walmart, Pinterest, Twitter, Hulu etc.

      Acesta este un cadru foarte ușor. Eliminați funcționalitățile inutile din cadrele JS populare și obțineți Backbone. Acesta este unul dintre cele mai bune cadre pentru aplicații web cu o singură pagină. Deși pentru a extinde funcționalitatea va trebui să adăugați alte biblioteci ca dependențe.

      Backbone seamănă mult cu jQuery cu numărul său mare de plugin-uri și extensii. Este grozav pentru începători pentru aplicații simple.

      KnockoutJS

      KnockoutJS este un alt cadru JavaScript open source excelent care funcționează cu modelul MVVM (Model-View-ViewModel). Este dezvoltat în JavaScript simplu, fără dependențe externe.

      Este deosebit de bun la legarea datelor. Este ușor de utilizat și facilitează chiar și pentru începători să înceapă un proiect.

      Acest cadru este potrivit pentru aplicații cu o singură pagină, în special ca bibliotecă. Deși nu are o comunitate la fel de mare ca oricare dintre platformele de mai sus.

      Dacă prețuiești simplitatea și nu vrei scripturi pe server din partea ta, alege Knockout.

      Meteor.js

      MeteorJS are toate caracteristicile de care are nevoie orice dezvoltator pentru redarea front-end, dezvoltarea back-end și gestionarea bazelor de date.

      Vă oferă flexibilitatea și instrumentele necesare pentru a crea aplicații bogate.

      Pachetele din partea serverului rulează în node.js, așa că aveți nevoie doar de pachete MeteorJS pentru a deschide baza de date. Modificările la baza de date sunt simulate înapoi în interfața cu utilizatorul fără confuzie între diferite limbi.

      Aurelia.js

      AureliaJS este un cadru JS de generație următoare pentru aplicații mobile și web.

      Cel mai bun lucru despre Aurelia este că este foarte modulară și conține destul de multe biblioteci mici independente. Tu, ca dezvoltator, poți alege dintre aceste biblioteci pentru a-ți crea propriul cadru.

      Polymer.js

      PolymerJS a fost lansat în 2013 de Google.

      Folosește conceptul de componente web pentru a extinde capacitățile HTML. Dacă asta îți amintește de Angular, asta este pentru că este. PolymerJS oferă superputere și structură elementelor HTML personalizate.

      Skel este un cadru JavaScript pur.

      Este ideal pentru crearea de aplicații web și site-uri web responsive. Vine cu grilă CSS, puncte de întrerupere, API și caracteristici de normalizare a stilului browserului.

      Vue.js este un cadru destul de nou. Deși câștigă rapid popularitate în rândul dezvoltatorilor web.

      Acest cadru funcționează cu paradigma de proiectare MVVM și este conceput pentru a crea interfețe cu utilizatorul în paradigma de programare reactivă cu un API simplu și compatibil.

      Scurtă concluzie

      În acest articol, nu nominalizăm niciun cadru JavaScript pentru campionat. Depinde de tine să decizi în funcție de obiectivele tale și de ceea ce ai nevoie.

      Această colecție acoperă 15 cadre convenabile pentru front-end. Pe lângă cele mai populare platforme, există mai multe platforme mai puțin cunoscute pe listă - sperăm că toată lumea poate găsi o soluție potrivită pentru proiectul său.

      unghiular

      O bijuterie de programare web: chiar și unii adepți înfocați Angular au optat pentru React. React a fost capabil să facă ceea ce Angular nu a putut face - vă permite să dezvoltați un front-end fără a vă plonja în junglă și complexitatea cadrului. React este o bibliotecă JavaScript creată de Facebook și scopul ei principal este de a oferi lucru confortabil cu Shadow DOM. În acest scop se folosește DOM-ul Virtual, un model care, la fiecare modificare, generează o listă de operațiuni care trebuie efectuate asupra DOM-ului pentru a-l aduce într-o stare nouă.

      Dacă ești interesat de acest cadru și decizi să începi să-l studiezi, ți-am pregătit o traducere pe această temă. În aprilie 2017, Facebook a relansat biblioteca, noul proiect se va numi React Fiber.

      Priză

      Dacă nu acordați suficientă atenție structurii codului, chiar și atunci când dezvoltați o singură pagină sau o aplicație cu o singură pagină, codul dvs. se poate transforma într-o adevărată farfurie de spaghete. Backbone este construit pe ideea că toate lucrările de pe partea serverului ar trebui să fie efectuate printr-un API, minimizând cantitatea de cod necesară pentru a obține aceeași funcționalitate bogată ca și cadrele web complexe.

      Backbone este unul dintre cele mai populare cadre pentru dezvoltarea web, în ​​principal din două motive: principiul utilizării modulelor este foarte ușor de înțeles, ceea ce înseamnă că învățarea utilizării cadrului în sine este simplă.

      Vue

      O bibliotecă pentru crearea de aplicații mobile și web încrucișate, care conține un set mare de componente de interfață utilizator gata de utilizare, care pot fi combinate sau utilizate individual. Widgeturile sunt compatibile cu orice tehnologia serverului: PHP, Java, ASP.NET, Ruby, Grails, ColdFusion, Python etc. ÎN noua versiune 5.1 a adăugat suport pentru TypeScript, JSON și API-ul Promise.

      PureMVC