Programiranje

Beyond jQuery: strokovni vodnik po okvirih JavaScript

Značilnost zares dobrega programerja je lenoba. To pa ne pomeni neumnega ali nevednega. Resnično dober leni programer ne napiše (potem je treba odpraviti napak in preizkusiti) 100 vrstic kode, ko bo 10 naredilo. V svetu JavaScript se bo resnično leni razvijalec zanašal na učinkovit, dobro preizkušen in dobro podprt okvir, da se izogne ​​nenehnemu iskanju rešitev za pogoste težave.

Ogrodja "razdelijo" večino natančne funkcionalnosti jezika JavaScript v klice metod in tako zmanjšajo količino kode, ki jo leni programer potrebuje za pisanje, testiranje in odpravljanje napak. Preden izkoristite to prednost, morate odpraviti dve oviri: izbrati okvir za svoj namen in se ga naučiti.

Ko se naučite okvira, je očitno, da se ga držite pri vsem, kar razvijete, tako da se vam ni treba naučiti česa drugega, vendar to ni vedno koristno. Pravzaprav je eden izmed namigov, ki pravi, da za trenutno nalogo uporabljate napačen okvir, ta, da veliko delate. Tako naj bo res leni in se vedno nadaljujte z učenjem.

Malo zgodovine JavaScript

Zgodovina JavaScripta sega v razvojna dela, ki jih je Brendan Eich opravil za jezik Mocha za podjetje za spletni brskalnik Netscape leta 1995. Mocha je bil objavljen kot LiveScript kasneje istega leta in preimenovan v JavaScript, ko je Sun Netscapeu podelil licenco za blagovno znamko. Poskus povezovanja lahkega C-tolmača JavaScript s nepovezano težko težo Java - objektno usmerjen jezik, sestavljen z žetoni - s podobnim imenom se je leta 1995 zdel dobra ideja za tržne namene, vendar se je v preteklih letih ta izbira ni povzročil konca zmede.

Razvoj JavaScripta v naslednjem desetletju so zaznamovala nesoglasja med izvajalci brskalnikov in dokaj šibka prizadevanja za standarde ECMA. Kar je spremenilo to slabo počutje in ponovno okrepilo jezik, je bil vzpon Dynamic HTML in Ajax sredi 2000-ih, čemur je hitro sledila uvedba odprtokodnih knjižnic JavaScript, kot so Prototype, jQuery, Dojo in MooTools, ki naj bi ustvarile Dynamic HTML in Ajax enostavnejši za uporabo in zagotavljanje "gradnikov" za JavaScript, ki bi izboljšali funkcionalnost kontrolnikov obrazcev HTML.

Čeprav je Netscape kmalu po JavaScript za brskalnik izdal strežnik JavaScript, se jezik v resnici ni začel uporabljati do rasti Node.js, ki se je začel leta 2009. Del tega, kar je Node.js naredil privlačnega, je bila uporaba Googlovih visoko nastavljen V8 JavaScript motor za knjižnične module, z jedrno kodo v dokaj prenosnem C ++.

Ta ogled okvirov JavaScript poskuša razumeti današnje glavne knjižnice JavaScript v treh kategorijah: tiste, ki se izvajajo v strežnikih Node.js, tiste, ki delujejo v brskalnikih, in tiste, ki podpirajo izvorne ali hibridne mobilne aplikacije.

Node.js ogrodja

Node.js je strežniška tehnologija, zasnovana na JavaScript in C ++, ki je pritegnila precej pozornosti in podpore že od uvedbe (z bučnimi ovacijami) avtorja Ryana Dahla v evropskem JSConf novembra 2009. Node.js odlikuje dogodkovna arhitektura, ki omogoča asinhronski vhod / izhod, majhen odtis pomnilnika ter veliko prepustnost in razširljivost spletnih aplikacij.

Medtem ko ima Node.js vse dele, ki so potrebni za izvedbo spletnega strežnika, je pisanje te plasti potrebno nekaj dela. TJ Holowaychuk je julija 2010 izdal Express 1.0 Beta in kmalu je postal "privzeti" zaledni strežnik za Node.js in del sklada MEAN z bazo podatkov MongoDB in vmesnikom Angular.JS.

Kljub temu imajo različni razvijalci in organizacije različne potrebe. Express je neposredno ali posredno ustvaril Locomotive, Hapi, Koa, Kraken in Sails.js. Meteor je povsem drugačen, čeprav tudi teče na Node.js.

Express. Express je minimalno in prilagodljivo ogrodje spletnih aplikacij Node.js, ki ponuja obsežen nabor funkcij za izdelavo enostranskih, večstranskih in hibridnih spletnih aplikacij. Express API se ukvarja s spletno aplikacijo, HTTP zahtevami in odgovori, usmerjanjem in vmesno programsko opremo. Od Express 4.x se podprta vmesna programska oprema za Express nahaja v številnih ločenih skladiščih.

Pojavilo se je več vilic Expressa in dodatkov za Express, med njimi Locomotive, Hapi in Koa. Koa je ustvaril eden največjih sodelavcev Expressa.

Express je starejši od svojih cepičev in ima večji odtis. Kljub temu ima tudi večjo skupnost in več stabilnosti. Nenehno vidim Express, vključen v druge okvire in orodja brez komentarjev, kot da bi bil to edina možna izbira za izdelavo spletnega strežnika na Node.js. Na GitHubu ima ogrodje več kot 23.000 zvezd in 4.000 vilic.

Hapi. Hapi je enostaven za uporabo, osredotočen na konfiguracijo, z vgrajeno podporo za preverjanje vnosa, predpomnjenje, preverjanje pristnosti in druge bistvene zmogljivosti za izdelavo spletnih in storitvenih aplikacij. Hapi omogoča razvijalcem, da se osredotočijo na pisanje logike aplikacij za večkratno uporabo na zelo modularen in predpisujoč način. Razvil ga je Walmart Labs in je dobra izbira za velike ekipe in velike projekte.

Hapi je bil prvotno zgrajen na vrhu Expressa, kasneje pa je bil preoblikovan tako, da je samostojen. Temelji na idejah, da je »konfiguracija boljša od kode« in »poslovna logika mora biti ločena od prometne plasti«. V zgornjem primeru opazite, kako jasna in čista je konfiguracija strežniških poti v kodi.

Koa. Koa je nov spletni okvir, ki ga je oblikovala ekipa za Express, vendar neodvisen od kode Express. Koa želi biti manjši, izrazitejši in močnejši temelj za spletne aplikacije in API-je. Koa uporablja generatorje ES6 za vmesno programsko opremo, namesto da uporablja povratne klice Node.js. Sledi aplikacija Koa z »zdravo, svet«, ki uporablja generator, ki deluje donos naslednji za prenos nadzora na naslednji generator:

Razlika med generatorji vmesne programske opreme, kot jih uporablja Koa, in povratnimi klici, kot jih uporabljata Express in Connect, je v tem, da dobite večjo prilagodljivost z generatorji. Na primer, Connect preprosto prenese nadzor skozi vrsto funkcij, dokler se ena ne vrne, medtem ko Koa daje nadzor "navzdol", nato nadzor teče nazaj "gorvodno". V zgornjem primeru x-odzivni čas "ovije" odzivni generator z znakom donos naslednji izjavo, ki označuje klic. Dajanje je bolj prilagodljivo kot eksplicitni klici funkcij, saj olajša vstavljanje drugega generatorja v zaporedje - na primer spletnega zapisovalnika med časovnikom in odzivom.

Kraken. Kraken je odprtokodni projekt PayPal in je varen in razširljiv sloj, ki razširja Express tako, da zagotavlja strukturo in konvencije, podobno kot Locomotive. Čeprav je Kraken glavni steber njegovega ogrodja, lahko naslednje module uporabljamo tudi samostojno: Lusca (varnost), Kappa (proxy NPM), Makara (LinkedIn Dust.js I18N) in Adaro (LinkedIn Dust.js Templating).

Kraken se zanaša jo za ustvarjanje projektov, kot je prikazano na posnetku zaslona levo. Tako kot Locomotive svoje projekte organizira v običajne imenike, podobne Rails, vključno z modeli, krmilniki in konfiguracijo. Kot ustvarjen, se Kraken poveže s Expressom kot standardno vmesno programsko opremo, definirano kot app, ki ima potem svoje app.use () in app.listen () imenovane metode. Vsaka pot v strežniku Kraken živi v svoji datoteki v mapi krmilnikov.

Lokomotiva. Locomotive kot spletni okvir za Node.js podpira vzorce MVC, poti RESTful in konvencije glede konfiguracije (na primer Rails), hkrati pa se nemoteno integrira s katerim koli mehanizmom zbirke podatkov in predlog. Locomotive temelji na Express in Connect, ki je preprost lepilni okvir za vmesno programsko opremo, ki ga uporabljajo številni okviri Node.js.

Locomotive doda Expressu strukturo, podobno Ruby on Rails, ki jo vidite na zgornji sliki, vendar Express sicer nima. Pogledi lokomotive so pogosto vdelane datoteke JavaScript (html.ejs), kot je prikazano tukaj, vendar Locomotive podpira tudi Jade in druge skladne mehanizme predlog za Express. Funkcijo REST nadzirajo poti, kot je to običajno pri strežnikih Express. Z Locomotive lahko uporabite katero koli bazo podatkov in plast ORM (objektno-relacijsko preslikavo), ki jo želite. Vodič prikazuje uporabo MongoDB z Mongoose in delo s potnim listom za preverjanje pristnosti uporabnika.

Meteor. Meteor vam ponuja korenito preprostejši način za izdelavo mobilnih in spletnih aplikacij v realnem času, v celoti v JavaScript, iz ene kode. Namesto da pošilja HTML prek žice, Meteor pošlje podatke s strežnika, da jih odjemalec upodobi. Poleg samostojnega delovanja se lahko Meteor integrira še z AngularJS in React. Meteor ni nič podoben Expressu, čeprav je zgrajen tudi na Node.js in podpira predloge za krmilo, Blaze in Jade.

Meteor omogoča hitro izdelavo prototipov in proizvaja kodo med različnimi platformami (splet, Android, iOS). Integrira se z MongoDB z uporabo protokola za porazdeljene podatke in vzorca za objavo in naročanje za samodejno širjenje sprememb podatkov na odjemalce, ne da bi od razvijalca zahteval, da napiše sinhronizacijsko kodo. Meteor je odjemalca odvisen od jQuery in ga je mogoče uporabiti s katero koli knjižnico gradnikov uporabniškega vmesnika JavaScript.

Meteor je razvila Meteor Development Group, zagon, ki ga je inkubiral Y Combinator. Meteor je zdaj dovolj zrel, da podpira pol ducata vadnic. Projekt je na GitHubu zbral več kot 32.000 zvezd.

Sam Meteor je brezplačna odprtokodna programska oprema, vendar jo skupina Meteor monetizira s prodajo naročnin na Meteor Galaxy DevOps, ki vključujejo strežniški prostor AWS in osnovno podporo za Meteor ter ločeno naročnino na podporo Premium.

Sails.js. Z Sails lahko izdelate Node.js aplikacije po meri podjetja. Zasnovan je tako, da posnema znani vzorec modela-view-controller (MVC) okvirov, kot je Ruby on Rails, vendar s podporo zahtevam sodobnih aplikacij: API-ji na osnovi podatkov s prilagodljivo, storitveno usmerjeno arhitekturo. Še posebej dober je za izdelavo aplikacij za klepet, sprotne nadzorne plošče ali igre za več igralcev, vendar ga lahko uporabite za kateri koli projekt spletne aplikacije. Sails podpira WebSockets in samodejno pošilja sporočila vtičnic na poti vaše aplikacije.

Tako kot Rails tudi Sails vrednoti konvencijo glede konfiguracije, ponuja generatorje in odre za hitro izdelavo REST API-jev iz načrtov in uporablja vzorec oblikovanja MVC / aktivnega zapisa. Sails je zgrajen na vrhu Expressa in za ORM uporablja Waterline s podporo za ORM priključke. Waterline podpira baze podatkov SQL in NoSQL.

Sails je zaledni okvir, zasnovan tako, da je združljiv s katerim koli prednjim spletnim okoljem, kot je Angular ali Backbone, ali mobilno napravo, kot je iOS ali Android, ki vam je všeč ali jo morate podpirati. V delih na Sails.js je ena knjiga, ki je še vedno le delno dokončana.

Okviri HTML5 / JavaScript

Knjižnice in ogrodja JavaScript tradicionalno mislimo kot delujoče v brskalnikih. Kot sem že omenil, so nekateri izmed njih - jQuery, Dojo in MooTools - nastali sredi 2000-ih predvsem zaradi lažjega pisanja Dynamic HTML in Ajax. Nekatere od teh so se od takrat razširile na dodatna področja funkcionalnosti, kot so pripomočki uporabniškega vmesnika in vmesniki mobilnih naprav.

Drugi so nastali pred kratkim. AngularJS je čelni okvir, ki razširja HTML z oznakami za dinamične poglede in vezavo podatkov. Backbone.js in Ember sta namenjena razvoju spletnih strani z eno stranjo. React je namenjen izdelavi uporabniškega vmesnika ali pogleda, običajno za enostranske aplikacije.

Spet drugi okviri zasledujejo ožja področja specializacije. D3 izvaja vizualizacijo podatkov in animacije. Socket.IO izvaja spletne aplikacije v realnem času. Knockout je način povezovanja podatkovnega modela s spletnim uporabniškim vmesnikom. Polymer na vrhu API-jev za spletne komponente ponuja lahek sloj za "sladkor", ki pomaga pri izdelavi lastnih spletnih komponent. Podčrtaj je splošno koristna knjižnica.

Kot lahko pričakujete, imate med zadetki, ki jih lahko izbirate pri spletnem razvoju na strani odjemalca.

Kotni JS. AngularJS (ali preprosto Angular, med prijatelji) je ogrodje JavaScript Ajax, ki gleda na model (MVW), ki razširja HTML z oznakami za dinamične poglede in vezavo podatkov. Angular je še posebej dober za razvoj spletnih strani z eno stranjo in povezovanje obrazcev HTML z modeli in krmilniki JavaScript.

Čudno zveneč vzorec model-view-whatever je poskus vključitve vzorcev model-view-control, model-view-viewmodel (MVVM) in model-view-presenter (MVP) pod eno ime. Medtem ko programerji radi trdijo o razlikah med temi tremi tesno povezanimi vzorci, so se razvijalci podjetja Angular odločili, da se ne bodo pogovarjali.

V bistvu Angular samodejno sinhronizira podatke iz vašega uporabniškega vmesnika (pogled) z vašimi objekti JavaScript (model) prek dvosmerne vezave podatkov. Za lažje strukturiranje aplikacije in lažje preskušanje Angular uči brskalnik, kako izvajati vbrizgavanje odvisnosti in inverzijo nadzora.

Angular je ustvaril Google in je odprt pod licenco MIT. Skladišče na GitHubu ima več kot 47.000 zvezd in 22.000 vilic. Izdelano s programom Angular prikazuje na stotine spletnih mest, zgrajenih s sistemom Angular, med katerimi so številne odmevne spletne lastnosti.

$config[zx-auto] not found$config[zx-overlay] not found