Ohjelmointi

JQueryn ulkopuolella: Asiantuntijaopas JavaScript-kehyksiin

Todella hyvän ohjelmoijan määrittelevä ominaisuus on laiskuus. Se ei kuitenkaan tarkoita tyhmää tai tietämätöntä. Todella hyvä laiska ohjelmoija ei kirjoita (sitten täytyy debugata ja testata) 100 riviä koodia, kun 10 tekee. JavaScript-maailmassa todella laiska kehittäjä luottaa tehokkaaseen, testattuun ja tuettuun kehykseen välttääkseen jatkuvasti ratkaisuja yleisiin ongelmiin.

Kehykset "pilkkoavat" suurimman osan JavaScript-kielen hienojakoisista toiminnoista metodikutsuksi, mikä vähentää laiskan ohjelmoijan tarvetta kirjoittaa, testata ja virheenkorjausta. Ennen tämän hyödyn saamista on selvitettävä kaksi estettä: kehyksen valitseminen tarkoituksellesi ja sen oppiminen.

Kun olet oppinut kehyksen, on selvää, että pidät kiinni siitä kaikesta, mitä kehität, jotta sinun ei tarvitse oppia jotain muuta, mutta se ei ole aina hyödyllistä. Itse asiassa yksi vihjeistä, joiden mukaan käytät väärää kehystä nykyisessä tehtävässäsi, on se, että huomaat tekevän paljon työtä. Joten ole Todella laiska ja jatka oppimista.

Pieni JavaScript-historia

JavaScriptin historia palaa kehitystyöhön, jonka Brendan Eich teki Noccape-selainyhtiön Mocha-kielellä vuonna 1995. Mocha julkaistiin LiveScript-muodossa myöhemmin samana vuonna ja nimettiin uudelleen JavaScriptiksi, kun Sun myönsi Netscapelle tavaramerkkilisenssin. Yrittää sitoa kevyt C-tyyppinen JavaScript-tulkki etuyhteydettömään raskaaseen Java-sovellukseen - olio-suuntautuneeseen, tunnisteella koottuun kieleen - samanlaisella nimellä, tuntui hyvältä markkinointitarkoituksessa vuonna 1995, mutta vuosien varrella tämä valinta on ollut ei aiheuttanut hämmennystä.

JavaScriptiä kehitettiin seuraavan vuosikymmenen aikana selaimen toteuttajien välisten erimielisyyksien ja melko heikkojen ECMA-standardien avulla. Mikä muutti tämän huonovointisuuden ja uudisti kielen, oli dynaamisen HTML: n ja Ajaxin nousu 2000-luvun puolivälissä, jota seurasi nopeasti avoimen lähdekoodin JavaScript-kirjastojen, kuten Prototype, jQuery, Dojo ja MooTools, käyttöönotto, joiden tarkoituksena oli tehdä dynaamisesta HTML: stä ja Ajax on helpompi käyttää, ja tarjota "widgetit" JavaScriptiä varten, jotka parantavat HTML-muotoisten ohjausobjektien toimintaa.

Vaikka Netscape julkaisi JavaScriptipalvelimen pian selaimen JavaScriptiä käytettäessä, kieli ei oikeastaan ​​käynnistynyt taustakäyttöön vasta Node.js: n nousun jälkeen vuonna 2009. Osa siitä, mikä teki Node.js: stä houkuttelevan, oli Googlen erittäin viritetty V8 JavaScript-moottori kirjastomoduuleille, ydinkoodi melko kannettavalla C ++: lla.

Tämä esittely JavaScript-kehyksistä on yritys ymmärtää nykypäivän suurimmat JavaScript-kirjastot kolmessa kategoriassa: jotka toimivat Node.js-palvelimilla, jotka toimivat selaimissa ja jotka tukevat natiivi- tai hybridimobiilisovelluksia.

Node.js-kehykset

Node.js on JavaScripti- ja C ++ -pohjainen palvelintekniikka, joka on herättänyt melko vähän huomiota ja tukea sen jälkeen, kun kirjailija Ryan Dahl esitteli (pysyviä suosionosoituksia varten) Euroopan JSConfissa marraskuussa 2009. Node.js erottuu tapahtumavetoinen arkkitehtuuri, joka pystyy suorittamaan asynkronisen I / O: n, pienen muistinjäljen sekä suuren läpimenon ja skaalautuvuuden verkkosovelluksille

Vaikka Node.js: llä on kaikki tarvittavat osat Web-palvelimen toteuttamiseen, kerroksen kirjoittaminen vie jonkin verran työtä. TJ Holowaychuk julkaisi Express 1.0 Betan heinäkuussa 2010, ja siitä tuli pian Node.js: n "oletus" taustapalvelin ja osa MEAN-pinoa MongoDB-tietokannan ja Angular.JS-käyttöliittymäkehyksen kanssa.

Eri kehittäjillä ja organisaatioilla on kuitenkin erilaiset tarpeet. Express on suoraan tai epäsuorasti synnyttänyt veturin, Hapin, Koa, Krakenin ja Sails.js: n. Meteor on melko erilainen, vaikka se toimii myös Node.js-tiedostossa.

Ilmaista. Express on minimaalinen ja joustava Node.js-verkkosovelluskehys, joka tarjoaa vankan joukon ominaisuuksia yhden sivun, monisivuisten ja hybridisovellusten rakentamiseen. Express-sovellusliittymä käsittelee verkkosovellusta, HTTP-pyyntöjä ja vastauksia, reititystä ja väliohjelmistoja. Express 4.x: stä lähtien tuettu Express-väliohjelmisto sijaitsee useissa erillisissä arkistoissa.

Useita Expressin haarukoita ja Expressin lisäosia on noussut esiin, mukaan lukien veturi, Hapi ja Koa. Koa luotiin yksi Expressin tärkeimmistä avustajista.

Express on vanhempi kuin juonensa, ja sillä on suurempi jalanjälki. Siellä on kuitenkin myös suurempi yhteisö ja enemmän vakautta. Näen Expressin jatkuvasti sisällytetty muihin kehyksiin ja työkaluihin ilman kommentteja, ikään kuin se olisi ainoa mahdollinen valinta Web-palvelimen rakentamiseen Node.js: lle. GitHubissa kehyksessä on yli 23000 tähteä ja 4000 haarukkaa.

Hapi. Hapi on helppokäyttöinen, määrityskeskeinen kehys, jossa on sisäänrakennettu tuki tulojen tarkistamiseen, välimuistiin tallentamiseen, todennukseen ja muihin olennaisiin palveluihin verkko- ja palvelusovellusten rakentamiseksi. Hapi antaa kehittäjien keskittyä kirjoittamaan uudelleenkäytettäviä sovelluslogiikoita erittäin modulaarisesti ja määräämällä tavalla. Sen on kehittänyt Walmart Labs, ja se on hyvä valinta suurille ryhmille ja suurille projekteille.

Hapi rakennettiin alun perin Expressin päälle, mutta myöhemmin se suunniteltiin itsenäiseksi. Se perustuu ajatuksiin, että "kokoonpano on parempi kuin koodi" ja "liikelogiikka on eristettävä siirtokerroksesta". Huomaa yllä olevassa esimerkissä, kuinka selkeä ja puhdas palvelinreittien kokoonpano näkyy koodissa.

Koa. Koa on uusi verkkokehys, jonka on suunnitellut Expressin takana oleva tiimi, mutta riippumaton Express-koodista. Koa pyrkii olemaan pienempi, ilmeikkäämpi ja vankempi perusta verkkosovelluksille ja sovellusliittymille. Koa käyttää ES6-generaattoreita väliohjelmistoihin Node.js-soittojen sijaan. Seuraava on "hello, world" Koa -sovellus, joka käyttää generaattoria, joka tekee a tuotto seuraavaksi siirtää ohjaus seuraavalle generaattorille:

Ero Koa: n käyttämien väliohjelmistogeneraattoreiden ja Expressin ja Connectin käyttämien soittopyyntöjen välillä on, että saat enemmän joustavuutta generaattoreiden kanssa. Esimerkiksi Connect yksinkertaisesti siirtää ohjauksen toimintosarjan läpi, kunnes yksi palaa, kun taas Koa antaa ohjauksen "alavirtaan", sitten ohjaus ohjaa takaisin "ylävirtaan". Yllä olevassa esimerkissä x-vasteaika “kietoo” vastausgeneraattorin tuotto seuraavaksi puhelu merkitsevä lausunto. Tuotto on joustavampaa kuin eksplisiittiset funktiokutsut, koska sen avulla on helppo lisätä toinen generaattori sekvenssiin - esimerkiksi Web-kirjain ajastimen ja vastauksen väliin.

Kraken. PayPalin avoimen lähdekoodin projekti, Kraken, on turvallinen ja skaalautuva kerros, joka laajentaa Expressia tarjoamalla rakennetta ja käytäntöjä, aivan kuten Locomotiven. Vaikka Kraken on sen kehyksen pylväs, seuraavia moduuleja voidaan käyttää myös itsenäisesti: Lusca (turvallisuus), Kappa (NPM-välityspalvelin), Makara (LinkedIn Dust.js I18N) ja Adaro (LinkedIn Dust.js Templating).

Kraken luottaa yo luoda projekteja, kuten vasemmalla olevassa kuvakaappauksessa näkyy. Kuten veturi, se järjestää projektinsa tavanomaisiin Rails-tyyppisiin hakemistoihin, mukaan lukien mallit, ohjaimet ja kokoonpanot. Luotuaan Kraken yhdistää Expressin vakiona väliohjelmistoksi, joka määritellään sovellus, jolla on sitten oma app.use () ja app.listen () kutsutut menetelmät. Jokainen Kraken-palvelimen reitti asuu omassa tiedostossaan ohjaimet-kansiossa.

Veturi. Node.js: n verkkokehyksenä Locomotive tukee MVC-malleja, RESTful-reittejä ja käytäntöjä kokoonpanossa (kuten kiskot) integroimalla saumattomasti mihin tahansa tietokantaan ja mallimoottoriin. Veturi perustuu Express and Connect -palveluun, joka on yksinkertainen liimakehys väliohjelmistoille, joita monet Node.js-kehykset käyttävät.

Veturi lisää Expressiin jonkin verran Ruby on Rails -tyyppistä rakennetta, jonka näet yllä olevasta kuvasta, josta Express muuten puuttuu. Veturinäkymät ovat usein upotettuja JavaScript (html.ejs) -tiedostoja, kuten tässä näkyy, mutta veturi tukee myös Jadea ja muita yhteensopivia Express-mallipohjia. REST-toimintoa ohjaavat reitit, kuten yleensä tapahtuu Express-pohjaisissa palvelimissa. Voit käyttää mitä tahansa tietokanta- ja ORM (object-relational mapping) -kerrosta, jota haluat käyttää Locomotiven kanssa. Opas esittelee MongoDB: n käyttämisen Mongoose-sovelluksen kanssa sekä työskentelyn Passportin kanssa käyttäjän todennuksessa.

Meteori. Meteor tarjoaa sinulle radikaalisti yksinkertaisemman tavan rakentaa reaaliaikaisia ​​mobiili- ja verkkosovelluksia täysin JavaScript-muodossa yhdestä koodipohjalta. HTML: n lähettämisen sijaan langan kautta Meteor lähettää tietoja palvelimelta asiakkaalle renderointia varten. Sen lisäksi, että Meteor toimii itsenäisesti, se voi integroitua AngularJS: n ja React: n kanssa. Meteor ei ole mikään Expressin kaltainen, vaikka se on rakennettu myös Node.js: n päälle ja tukee ohjaustanko-, Blaze- ja Jade-malleja.

Meteor mahdollistaa nopean prototyyppien muodostamisen ja tuottaa alustojen välisen (Web, Android, iOS) koodin. Se integroituu MongoDB: hen käyttämällä Distributed Data Protocol -protokollaa ja public-tilaa-mallia levittääksesi datamuutoksia automaattisesti asiakkaille ilman, että kehittäjää vaaditaan kirjoittamaan synkronointikoodia. Asiakkaalla Meteor riippuu jQuerystä ja sitä voidaan käyttää minkä tahansa JavaScript-käyttöliittymän widget-kirjaston kanssa.

Meteorin on kehittänyt Meteor Development Group, Y Combinatorin inkuboima käynnistysyritys. Meteor on nyt riittävän kypsä tukemaan puoli tusinaa opaskirjoja. Projekti on piirtänyt yli 32 000 tähteä GitHubille.

Meteor itsessään on ilmainen avoimen lähdekoodin ohjelmisto, mutta Meteor-ryhmä kaupallistaa sen myymällä Meteor Galaxy DevOps -tilauksia, jotka sisältävät AWS-palvelintilan ja perustiedot Meteorista, sekä erillisen Premium-tukitilauksen.

Sails.js. Sailsin avulla voit rakentaa mukautettuja yritystason Node.js-sovelluksia. Se on suunniteltu jäljittelemään tuttua mallinäkymän ohjaimen (MVC) mallia kehyksistä, kuten Ruby on Rails, mutta tukee nykyaikaisten sovellusten vaatimuksia: dataohjatut sovellusliittymät skaalautuvalla, palvelukeskeisellä arkkitehtuurilla. Se on erityisen hyvä chat-sovellusten, reaaliaikaisten hallintapaneelien tai moninpelien rakentamiseen, mutta voit käyttää sitä missä tahansa verkkosovellushankkeessa. Sails tukee WebSocketsia ja lähettää socket-viestejä automaattisesti sovelluksesi reiteille.

Kuten Rails, Sails arvostaa sopimusta kokoonpanon suhteen, tarjoaa generaattorit ja telineet REST-sovellusliittymien rakentamiseksi nopeasti piirustuksista ja käyttää MVC / aktiivisen tietueen suunnittelukuviota. Sails on rakennettu Expressin päälle, ja se käyttää Waterlinea ORM-järjestelmäänsä ja tukee ORM-liittymiä. Waterline tukee sekä SQL- että NoSQL-tietokantoja.

Sails on taustakehys, joka on suunniteltu yhteensopivaksi minkä tahansa käyttöliittymän verkkokehyksen, kuten Angular tai Backbone, tai mobiililaitteen, kuten iOS tai Android, kanssa, joka sattuu pitämään tai jota sinun on tuettava. Sails.js-teoksissa on yksi kirja, joka on edelleen vain osittain valmis.

HTML5 / JavaScript-kehykset

Olemme perinteisesti sitä mieltä, että JavaScript-kirjastot ja kehykset toimivat selaimissa. Kuten aiemmin mainitsin, jotkut näistä - jQuery, Dojo ja MooTools - syntyivät 2000-luvun puolivälissä pääasiassa dynaamisen HTML: n ja Ajaxin kirjoittamisen helpottamiseksi. Jotkut näistä ovat sittemmin laajentuneet toiminnallisuuden lisäalueille, kuten käyttöliittymän widgetit ja mobiililaitteiden rajapinnat.

Toiset ovat tulleet viime aikoina. AngularJS on käyttöliittymäkehys, joka laajentaa HTML-koodia dynaamisten näkymien ja tietojen sitomisen merkinnöillä. Backbone.js ja Ember on suunniteltu yhden sivun verkkosovellusten kehittämiseen. React on käyttöliittymän tai näkymän rakentaminen, tyypillisesti yhden sivun sovelluksia varten.

Vielä muut kehykset pyrkivät kapeampiin erikoistumisalueisiin. D3 tekee tietojen visualisointia ja animaatioita. Socket.IO toteuttaa reaaliaikaisia ​​verkkosovelluksia. Knockout on korkean tason tapa linkittää tietomalli Web-käyttöliittymään. Polymer tarjoaa kevyen "sokerointikerroksen" Web Components -sovellusliittymien päälle, mikä auttaa rakentamaan omia verkkokomponentteja. Alaviiva on yleiskäyttöinen kirjasto.

Kuten voit odottaa, sinulla on hämmennys rikkauksista, joista voit valita asiakaspuolen verkkokehityksen.

KulmaJS. AngularJS (tai yksinkertaisesti Angular, ystävien keskuudessa) on mallinäkymä riippumatta (MVW) JavaScript Ajax -kehys, joka laajentaa HTML-koodia dynaamisten näkymien ja tietojen sitomisen merkinnöillä. Angular on erityisen hyvä yhden sivun verkkosovellusten kehittämiseen ja HTML-lomakkeiden linkittämiseen malleihin ja JavaScript-ohjaimiin.

Outo kuulostava malli-näkymä-mikä tahansa malli on yritys sisällyttää malli-näkymä-ohjain, malli-näkymä-näkymä-malli (MVVM) ja malli-näkymä-esittäjä (MVP) -mallit yhden monikerroksen alle. Vaikka ohjelmoijat rakastavat väittää näiden kolmen läheisesti liittyvän mallin välisiä eroja, Angular-kehittäjät päättivät lopettaa keskustelun.

Pohjimmiltaan Angular synkronoi automaattisesti käyttöliittymän (näkymän) tiedot JavaScript-objektiisi (mallin) kanssa kaksisuuntaisen datan sitomisen avulla. Auttaakseen sinua rakentamaan sovelluksesi paremmin ja helpottamaan testaamista, Angular opettaa selaimelle miten riippuvuuden injektointi ja ohjauksen kääntäminen.

Google on luonut Angularin ja avoimen lähdekoodin MIT-lisenssillä. GitHubin arkistossa on yli 47 000 tähteä ja 22 000 haarukkaa. Made with Angular esittelee satoja Angularilla rakennettuja verkkosivustoja, joista monet ovat korkean profiilin verkko-ominaisuuksia.