Programmēšana

Ārpus jQuery: ekspertu ceļvedis JavaScript ietvariem

Patiesi laba programmētāja raksturīgā iezīme ir slinkums. Tas tomēr nenozīmē stulbu vai nezinošu. Patiešām labs slinks programmētājs neraksta (tad atkļūdot un jāpārbauda) 100 koda rindiņas, kad to izdarīs 10. JavaScript pasaulē patiesi slinks izstrādātājs paļaujas uz efektīvu, pārbaudītu un atbalstītu sistēmu, lai izvairītos no pastāvīgu problēmu risinājumu atkārtota izgudrošanas.

Rāmji lielu daļu no JavaScript valodas sīkās funkcionalitātes sadala metožu izsaukumos, samazinot koda daudzumu, kas slinkam programmētājam ir nepieciešams rakstīšanai, testēšanai un atkļūdošanai. Pirms izmantot šo priekšrocību, ir jāattīsta divi šķēršļi: izvēlēties pamatu savam mērķim un iemācīties to.

Kad esat iemācījies ietvaru, acīmredzams kurss ir turēties pie visa, ko izstrādājat, lai nebūtu jāmācās kaut kas cits, taču tas ne vienmēr ir noderīgi. Faktiski viens no norādījumiem, kas saka, ka pašreizējam uzdevumam izmantojat nepareizu sistēmu, ir tas, ka jūs daudz darāt. Tā arī esi tiešām slinks un vienmēr turpini mācīties.

Mazliet JavaScript vēstures

JavaScript vēsture ir saistīta ar izstrādes darbu, ko Brendans Eihs 1995. gadā veica tīmekļa pārlūkprogrammas uzņēmuma Netscape Mocha valodā. Mocha tika izlaists kā LiveScript vēlāk tajā pašā gadā un pārdēvēts par JavaScript, kad Sun piešķīra Netscape preču zīmes licenci. Mēģinājums piesaistīt vieglo C veida JavaScript tulku nesaistītajam smagajam Java - objektorientētajai, žetonu sastādītajai valodai - ar līdzīga nosaukuma palīdzību 1995. gadā šķita laba ideja mārketinga vajadzībām, taču gadu gaitā šī izvēle neizraisīja neskaidrības.

JavaScript attīstību nākamajā desmitgadē iezīmēja nesaskaņas starp pārlūka ieviesējiem un diezgan vājais ECMA standartu darbs. Kas mainīja šo savārgumu un atjaunoja valodu, bija Dynamic HTML un Ajax pieaugums 2000. gadu vidū, kam ātri sekoja atvērtā koda JavaScript bibliotēku, piemēram, Prototype, jQuery, Dojo un MooTools, ieviešana, kuru mērķis bija padarīt dinamisku HTML un Ajax vieglāk izmantot, kā arī nodrošināt JavaScript “logrīkus”, kas uzlabotu HTML veidlapu vadību funkcionalitāti.

Neskatoties uz to, ka Netscape neilgi pēc pārlūkprogrammas JavaScript izlaida JavaScript serveri, valoda nebija paredzēta aizmugurējai lietošanai, līdz Node.js parādījās 2009. gadā. Daļa no tā, kas Node.js padarīja pievilcīgu, bija Google ļoti noregulēts V8 JavaScript dzinējs bibliotēkas moduļiem, ar pamatkodu diezgan pārnēsājamā C ++.

Šis JavaScript ietvaru ceļvedis ir mēģinājums izprast mūsdienu lielākās JavaScript bibliotēkas trīs kategorijās: tās, kas darbojas Node.js serveros, tās, kas darbojas pārlūkprogrammās, un tās, kas atbalsta vietējās vai hibrīdās mobilās lietotnes.

Node.js ietvari

Node.js ir uz JavaScript un C ++ balstīta serveru tehnoloģija, kas ir piesaistījusi diezgan daudz uzmanības un atbalsta kopš autora Ryan Dahl ieviešanas (ar ovācijām) Eiropas JSConf 2009. gada novembrī. Node.js izceļas ar notikumu virzīta arhitektūra, kas spēj nodrošināt asinhrono I / O, nelielu atmiņas apjomu, kā arī lielu tīmekļa lietojumprogrammu caurlaidspēju un mērogojamību.

Kaut arī Node.js ir visi Web servera ieviešanai nepieciešamie elementi, šī slāņa rakstīšana prasa zināmu darbu. TJ Holowaychuk 2010. gada jūlijā izlaida Express 1.0 Beta versiju, un tas drīz kļuva par “noklusējuma” Node.js aizmugures serveri un daļu no MEAN steka ar MongoDB datu bāzi un Angular.JS priekšgala ietvaru.

Neskatoties uz to, dažādiem izstrādātājiem un organizācijām ir atšķirīgas vajadzības. Express tieši vai netieši ir radījis lokomotīvi, Hapi, Koa, Kraken un Sails.js. Meteors ir diezgan atšķirīgs, lai gan arī tas darbojas vietnē Node.js.

Izteikt. Express ir minimāls un elastīgs Node.js tīmekļa lietojumprogrammu ietvars, kas nodrošina stabilu funkciju kopumu vienas lapas, vairāku lapu un hibrīdu tīmekļa lietojumprogrammu veidošanai. Express API nodarbojas ar tīmekļa lietojumprogrammu, HTTP pieprasījumiem un atbildēm, maršrutēšanu un starpprogrammatūru. Sākot ar Express 4.x, atbalstītā starpprogrammatūra Express atrodas vairākos atsevišķos krātuvēs.

Ir parādījušās vairākas Express dakšas un Express papildinājumi, tostarp lokomotīve, Hapi un Koa. Koa izveidoja viens no galvenajiem Express līdzautoriem.

Express ir vecāks par tā saknēm, un tam ir lielāks nospiedums. Neskatoties uz to, tajā ir arī lielāka kopiena un lielāka stabilitāte. Es pastāvīgi redzu Express, kas bez komentāriem ir iekļauts citās sistēmās un rīkos, it kā tā būtu vienīgā iespējamā tīmekļa servera izveidošana vietnē Node.js. Vietnē GitHub ietvaram ir vairāk nekā 23 000 zvaigžņu un 4000 dakšiņu.

Hapi. Hapi ir vienkārši lietojams, uz konfigurāciju orientēts ietvars ar iebūvētu atbalstu ievades validēšanai, kešatmiņai, autentifikācijai un citām būtiskām iespējām tīmekļa un pakalpojumu lietojumprogrammu veidošanai. Hapi ļauj izstrādātājiem koncentrēties uz atkārtoti lietojamas lietojumprogrammu loģikas rakstīšanu ļoti modulārā un receptes veidā. To izstrādāja Walmart Labs, un tā ir laba izvēle lielām komandām un lieliem projektiem.

Hapi sākotnēji tika uzbūvēts virs Express, bet vēlāk tika pārveidots, lai tas būtu atsevišķs. Tas ir balstīts uz idejām, ka “konfigurācija ir labāka par kodu” un “biznesa loģika ir jāizolē no transporta slāņa”. Iepriekš redzamajā piemērā ievērojiet, cik kodā parādās skaidra un tīra serveru maršrutu konfigurācija.

Koa. Koa ir jauns tīmekļa ietvars, ko izstrādājusi Express komanda, bet neatkarīgi no Express koda. Koa mērķis ir būt mazāks, izteiksmīgāks un stabilāks pamats tīmekļa lietojumprogrammām un API. Koa izmanto ES6 ģeneratorus starpprogrammatūrai, nevis izmanto Node.js atzvanus. Tālāk ir redzama Koa lietojumprogramma “sveika, pasaule”, izmantojot ģeneratoru, kas: raža nākamā nodot vadību nākamajam ģeneratoram:

Atšķirība starp starpprogrammatūras ģeneratoriem, kurus izmanto Koa, un atzvaniem, ko izmanto Express un Connect, ir tā, ka jūs saņemat lielāku elastību ar ģeneratoriem. Piemēram, Connect vienkārši izlaiž vadību, izmantojot virkni funkciju, līdz viena atgriežas, savukārt Koa nodrošina kontroli “lejup pa straumi”, pēc tam vadība plūst atpakaļ “augšpus straumes”. Iepriekš minētajā piemērā x-response-time “iesaiņo” atbildes ģeneratoru ar raža nākamā paziņojums, kas iezīmē zvanu. Ienākšana ir elastīgāka nekā skaidra funkciju izsaukšana, jo tā ļauj secībā ievietot citu ģeneratoru, piemēram, tīmekļa reģistrētāju starp taimeri un atbildi.

Krakena. PayPal atvērtā koda projekts Kraken ir drošs un pielāgojams slānis, kas paplašina Express, nodrošinot struktūru un konvencijas, līdzīgi kā lokomotīve. Lai arī Kraken ir tās ietvara galvenais pīlārs, šādus moduļus var izmantot arī neatkarīgi: Lusca (drošība), Kappa (NPM starpniekserveris), Makara (LinkedIn Dust.js I18N) un Adaro (LinkedIn Dust.js veidne).

Krakens paļaujas yo lai ģenerētu projektus, kā parādīts ekrāna ekrāna kreisajā pusē. Tāpat kā lokomotīve, tā organizē savus projektus parastajos Rails līdzīgos direktorijos, ieskaitot modeļus, kontrolierus un konfigurāciju. Pēc ģenerēšanas Kraken sasaista Express kā standarta starpprogrammatūru, kas definēta kā lietotne, kam tad ir savs app.use () un app.listen () sauktās metodes. Katrs Kraken servera maršruts dzīvo savā failā kontrolieru mapē.

Lokomotīve. Kā Web Node.js vietne, lokomotīve atbalsta MVC modeļus, RESTful maršrutus un vienošanos par konfigurāciju (piemēram, sliedes), vienlaikus nevainojami integrējoties ar jebkuru datu bāzi un veidņu motoru. Lokomotīve balstās uz Express un Connect, kas ir vienkārša līmjava starpprogrammatūrai, ko izmanto vairāki Node.js ietvari.

Lokomotīve papildina Express kaut kādu Ruby on Rails līdzīgu struktūru, kas redzama augšējā attēlā, ka Express citādi nav. Lokomotīvju skati bieži ir iegulti JavaScript (html.ejs) faili, kā parādīts šeit, taču lokomotīve atbalsta arī Jade un citus atbilstošos veidņu dzinējus Express. REST funkcionalitāti kontrolē maršruti, kā tas parasti notiek uz Express bāzes serveriem. Izmantojot lokomotīvi, varat izmantot jebkuru vēlamo datu bāzes un ORM (objektu un relāciju kartēšanas) slāni. Ceļvedis parāda MongoDB izmantošanu kopā ar Mongoose, kā arī darbu ar Passport lietotāja autentifikācijai.

Meteors. Meteor sniedz jums radikāli vienkāršāku veidu, kā no viena koda bāzes izveidot reāllaika mobilās un tīmekļa lietotnes, pilnībā JavaScript. Tā vietā, lai HTML sūtītu pa vadu, Meteor nosūta datus no servera klientam renderēšanai. Papildus skriešanai patstāvīgi, Meteor var integrēties ar AngularJS un React. Meteor nav nekas līdzīgs Express, kaut arī tas ir veidots virs Node.js un atbalsta stūres, Blaze un Jade veidnes.

Meteor ļauj ātri izveidot prototipus un rada starpplatformu (Web, Android, iOS) kodu. Tas integrējas ar MongoDB, izmantojot izplatīto datu protokolu un publicēšanas - abonēšanas modeli, lai automātiski izplatītu datu izmaiņas klientiem, neprasot no izstrādātāja rakstīt sinhronizācijas kodu. No klienta Meteor ir atkarīgs no jQuery, un to var izmantot ar jebkuru JavaScript lietotāja saskarnes logrīku bibliotēku.

Meteor izstrādā Meteor Development Group, starta uzņēmums, kuru inkubē Y Combinator. Meteors tagad ir pietiekami nobriedis, lai atbalstītu pusduci mācību grāmatu. Šis projekts vietnē GitHub ir uzzīmējis vairāk nekā 32 000 zvaigznes.

Meteor pati par sevi ir bezmaksas atvērtā pirmkoda programmatūra, taču Meteor grupa to monetizē, pārdodot Meteor Galaxy DevOps abonementus, kas ietver AWS servera vietu un pamata Meteor atbalstu, kā arī atsevišķu Premium atbalsta abonementu.

Buras.js. Izmantojot Sails, varat izveidot pielāgotas uzņēmuma līmeņa Node.js lietotnes. Tas ir paredzēts, lai atdarinātu pazīstamo modeļu skata-kontroliera (MVC) modeli tādiem ietvariem kā Ruby on Rails, taču tas atbalsta mūsdienu lietotņu prasības: uz datiem balstītas API ar mērogojamu, uz pakalpojumiem orientētu arhitektūru. Tas ir īpaši piemērots tērzēšanas lietotņu, reāllaika informācijas paneļu vai vairāku spēlētāju spēļu veidošanai, taču to varat izmantot jebkuram tīmekļa lietojumprogrammas projektam. Sails atbalsta WebSockets un automātiski nosūta kontaktligzdas ziņojumus uz jūsu lietotnes maršrutiem.

Tāpat kā Rails, arī Sails vērtē vienošanos par konfigurāciju, nodrošina ģeneratorus un sastatnes, lai ātri izveidotu REST API no rasējumiem, un izmanto MVC / aktīvo ierakstu noformējuma modeli. Sails ir uzbūvēts virs Express, un tā ORM izmanto Waterline ar atbalstu ORM pievienošanai. Waterline atbalsta gan SQL, gan NoSQL datu bāzes.

Sails ir aizmugures ietvars, kas paredzēts saderībai ar jebkuru priekšējā tīmekļa sistēmu, piemēram, Angular vai Backbone, vai mobilajām ierīcēm, piemēram, iOS vai Android, kas jums patīk vai ir jāatbalsta. Sails.js darbos ir viena grāmata, kas joprojām ir tikai daļēji pabeigta.

HTML5 / JavaScript ietvari

Mēs tradicionāli domājam par JavaScript bibliotēkām un ietvariem, kas darbojas pārlūkprogrammās. Kā jau minēju iepriekš, daži no tiem - jQuery, Dojo un MooTools - radās 2000. gadu vidū, galvenokārt lai atvieglotu dinamiskā HTML un Ajax rakstīšanu. Daži no tiem kopš tā laika ir izvērsti citās funkcionalitātes jomās, piemēram, lietotāja interfeisa logrīkos un mobilo ierīču saskarnēs.

Citi ir parādījušies pavisam nesen. AngularJS ir priekšgala ietvars, kas paplašina HTML ar marķējumu dinamiskiem skatiem un datu saistīšanai. Backbone.js un Ember ir paredzēti vienas lapas tīmekļa lietojumprogrammu izstrādei. React ir paredzēts lietotāja saskarnes vai skata izveidei, parasti lietojumiem ar vienu lapu.

Vēl citas struktūras tiecas pēc šaurākām specializācijas jomām. D3 veic datu vizualizāciju un animācijas. Socket.IO īsteno reāllaika tīmekļa lietotnes. Nokauts ir augsta līmeņa veids, kā datu modeli saistīt ar tīmekļa lietotāja saskarni. Polymer piedāvā vieglu “šugaringa” slāni Web Components API virsū, lai palīdzētu izveidot savus Web komponentus. Pasvītrojums ir vispārējas nozīmes bibliotēka.

Kā jūs varētu sagaidīt, jums ir neērti bagātības, no kurām izvēlēties klienta puses tīmekļa izstrādei.

StūraJS. AngularJS (vai vienkārši leņķiskais, draugu vidū) ir modeļa skats neatkarīgi no tā (MVW) JavaScript Ajax ietvars, kas paplašina HTML ar dinamisko skatu un datu saistīšanas marķējumu. Angular ir īpaši labs, lai izstrādātu vienas lapas tīmekļa lietojumprogrammas un saistītu HTML formas ar modeļiem un JavaScript kontrolieriem.

Dīvaini skanošais modelis-skats-neatkarīgi no modeļa ir mēģinājums vienā modeļā iekļaut modeļa-skata-kontroliera, modeļa-skata-skata modeļa (MVVM) un modeļa-skata-prezentētāja (MVP) modeļus. Kamēr programmētāji mīl argumentēt atšķirības starp šiem trim cieši saistītiem modeļiem, Angular izstrādātāji nolēma atteikties no diskusijas.

Būtībā Angular automātiski sinhronizē datus no jūsu lietotāja saskarnes (skata) ar jūsu JavaScript objektiem (modeli), izmantojot divvirzienu datu saistīšanu. Lai palīdzētu jums labāk strukturēt lietojumprogrammu un atvieglotu tā testēšanu, Angular pārlūkam māca, kā veikt atkarības ievadīšanu un vadības inversiju.

Angular izveidoja Google, un tā tika atvērta ar MIT licenci. GitHub krātuvē ir vairāk nekā 47 000 zvaigžņu un 22 000 dakšu. Izgatavots ar Angular demonstrē simtiem vietņu, kas izveidotas, izmantojot Angular, daudzas no tām ir augsta līmeņa tīmekļa rekvizīti.