Programavimas

Be „jQuery“: „JavaScript“ struktūrų ekspertų vadovas

Apibūdinanti tikrai gero programuotojo savybė yra tingumas. Vis dėlto tai nereiškia, kad kvaila ar nemokša. Tikrai geras tingus programuotojas nerašo (tada reikia derinti ir išbandyti) 100 eilučių kodo, kai padarys 10. „JavaScript“ pasaulyje tikrai tingus kūrėjas pasikliaudamas efektyvia, gerai patikrinta ir gerai palaikoma sistema, kad išvengtų nuolatinio išradimo iš bendrų problemų.

Karkasai „susmulkina“ daugelį smulkių „JavaScript“ kalbos funkcijų į metodo iškvietimus, sumažindami kodo, kurį tingus programuotojas turi rašyti, išbandyti ir derinti, kiekį. Prieš pasinaudojant tuo pranašumu reikia pašalinti dvi kliūtis: pasirinkti pagrindą savo tikslui ir išmokti.

Išmokę sistemą, akivaizdu, kad reikia laikytis visko, ką kuriate, kad nereikėtų mokytis ko nors kito, tačiau tai ne visada naudinga. Tiesą sakant, vienas iš patarimų, sakantis, kad dabartinei užduočiai naudojate netinkamą sistemą, yra tai, kad dirbate daug darbo. Taigi būk tikrai tingus ir visada mokosi.

Šiek tiek „JavaScript“ istorijos

„JavaScript“ istorija grįžta į kūrimo darbus, kuriuos Brendanas Eichas 1995 m. Padarė interneto naršyklių bendrovės „Netscape“ mokos kalba. „Mocha“ vėliau tais metais buvo išleista kaip „LiveScript“ ir pervadinta į „JavaScript“, kai „Sun“ suteikė „Netscape“ prekės ženklo licenciją. Bandymas susieti lengvą „C“ tipo „JavaScript“ vertėją su nesusijusia sunkiasvore „Java“ - į objektą orientuota, žetonų surinkta kalba - panašiu pavadinimu 1995 m. Atrodė gera idėja rinkodaros tikslais, tačiau bėgant metams toks pasirinkimas nesukėlė nesibaigiančios painiavos.

„JavaScript“ plėtra per ateinantį dešimtmetį buvo pažymėta naršyklių diegėjų nesutarimais ir gana silpnomis ECMA standartų pastangomis. Tai, kas pakeitė šį negalavimą ir atgaivino kalbą, buvo „Dynamic HTML“ ir „Ajax“ atsiradimas 2000-ųjų viduryje, po kurio greitai buvo pristatytos atvirojo kodo „JavaScript“ bibliotekos, tokios kaip „Prototype“, „jQuery“, „Dojo“ ir „MooTools“, kurios buvo skirtos sukurti dinamišką HTML ir „Ajax“ lengviau naudoti ir pateikti „valdiklius“ „JavaScript“, kurie pagerintų HTML formos valdiklių funkcionalumą.

Nors „Netscape“ išleido „JavaScript“ serverį netrukus po naršyklės „JavaScript“, kalba nebuvo naudojama galutiniam naudojimui, kol „Node.js“ pasirodys 2009 m. Dalis to, kas „Node.js“ padarė patraukliu, buvo „Google“ labai suderintas V8 „JavaScript“ variklis, skirtas bibliotekos moduliams, su pagrindiniu kodu gana nešiojamuoju C ++.

Ši „JavaScript“ struktūrų apžvalga yra bandymas suvokti pagrindines šių dienų „JavaScript“ bibliotekas trijose kategorijose: veikiančiose „Node.js“ serveriuose, veikiančiose naršyklėse ir palaikančiose vietines ar hibridines mobiliąsias programas.

„Node.js“ sistemos

„Node.js“ yra „JavaScript“ ir „C ++“ pagrindu sukurta serverių technologija, kuri sulaukė nemažai dėmesio ir palaikymo nuo to laiko, kai 2009 m. Lapkričio mėn. Europos JSConf pristatė autorius Ryanas Dahlas (ovacijomis). „Node.js“ skiriasi įvykių valdoma architektūra, galinti asinchroninį įvestį / išvestį, nedidelį atminties plotą, didelę interneto programų pralaidumą ir mastelį.

Nors „Node.js“ turi visas dalis, reikalingas žiniatinklio serveriui įdiegti, rašyti tą sluoksnį reikia šiek tiek dirbti. TJ Holowaychukas 2010 m. Liepos mėn. Išleido „Express 1.0 Beta“ ir netrukus tapo „numatytuoju“ „Node.js“ galiniu serveriu ir MEAN kamino dalimi su „MongoDB“ duomenų baze ir „Angular.JS“ front-end sistema.

Nepaisant to, skirtingi kūrėjai ir organizacijos turi skirtingus poreikius. „Express“ tiesiogiai ar netiesiogiai pagimdė „Locomotive“, „Hapi“, „Koa“, „Kraken“ ir „Sails.js“. „Meteor“ yra visiškai kitoks, nors ir jis veikia „Node.js“.

Išreikšti. „Express“ yra minimali ir lanksti „Node.js“ žiniatinklio programų sistema, teikianti patikimą funkcijų rinkinį, skirtą kurti vieno puslapio, kelių puslapių ir hibridines žiniatinklio programas. „Express API“ yra susijusi su žiniatinklio programa, HTTP užklausomis ir atsakymais, nukreipimu ir tarpine programine įranga. Nuo „Express 4.x“ palaikoma „Express“ tarpinė programinė įranga yra daugelyje atskirų saugyklų.

Atsirado keletas „Express“ šakių ir „Express“ priedų, įskaitant „Locomotive“, „Hapi“ ir „Koa“. „Koa“ sukūrė vienas pagrindinių „Express“ bendradarbių.

„Express“ yra senesnė už savo šaknis ir turi didesnį pėdsaką. Nepaisant to, ji taip pat turi didesnę bendruomenę ir daugiau stabilumo. Aš nuolat matau, kad „Express“ be komentarų įtraukta į kitas sistemas ir įrankius, tarsi tai būtų vienintelis galimas pasirinkimas kuriant žiniatinklio serverį „Node.js“. „GitHub“ sistemoje yra daugiau nei 23 000 žvaigždžių ir 4 000 šakių.

Hapi. „Hapi“ yra paprastas naudoti, į konfigūraciją orientuotas pagrindas su įmontuota įvesties patvirtinimo, talpyklos talpinimo, autentifikavimo ir kitų būtinų priemonių žiniatinklio ir paslaugų programoms kurti palaikymu. „Hapi“ leidžia kūrėjams sutelkti dėmesį į daugkartinio naudojimo programų logikos rašymą labai moduliniu ir receptiniu būdu. Jį sukūrė „Walmart Labs“ ir tai yra geras pasirinkimas didelėms komandoms ir dideliems projektams.

„Hapi“ iš pradžių buvo pastatytas ant „Express“, bet vėliau buvo pertvarkytas, kad būtų atskiras. Tai pagrįsta idėjomis, kad „konfigūracija yra geriau nei kodas“ ir „verslo logika turi būti izoliuota nuo transporto sluoksnio“. Aukščiau pateiktame pavyzdyje atkreipkite dėmesį, kaip kode aiški ir švari serverio maršrutų konfigūracija.

Koa. „Koa“ yra nauja žiniatinklio sistema, kurią sukūrė „Express“ komanda, tačiau nepriklausanti nuo „Express“ kodo. „Koa“ siekia būti mažesnis, išraiškingesnis ir tvirtesnis žiniatinklio programų ir API pagrindas. „Koa“ naudoja ES6 generatorius tarpinei programinei įrangai, o ne „Node.js“ skambučiams. Toliau pateikiama „sveika, pasaulis“ programa „Koa“, naudojant generatorių, kuris: derlius kitas perduoti valdymą kitam generatoriui:

Skirtumas tarp tarpinės programinės įrangos generatorių, kuriuos naudoja „Koa“, ir atgalinių skambučių, kuriuos naudoja „Express“ ir „Connect“, yra tas, kad jūs gaunate daugiau lankstumo naudodami generatorius. Pvz., „Connect“ tiesiog perduoda valdymą per daugybę funkcijų, kol viena grįš, o „Koa“ valdys „pasroviui“, tada valdys atgal „prieš srovę“. Ankstesniame pavyzdyje x atsako laikas „apgaubia“ atsako generatorių su derlius kitas kvietimą žymintis pareiškimas. Derlius yra lankstesnis nei aiškių funkcijų iškvietimai, nes tai leidžia lengvai įterpti kitą generatorių į seką, pavyzdžiui, žiniatinklio kaupiklį tarp laikmačio ir atsako.

Kraken. „PayPal“ atvirojo kodo projektas „Kraken“ yra saugus ir keičiamo dydžio sluoksnis, pratęsiantis „Express“ teikiant struktūrą ir susitarimus, panašiai kaip „Locomotive“. Nors „Kraken“ yra pagrindinis jos sistemos ramstis, šiuos modulius taip pat galima naudoti nepriklausomai: „Lusca“ (apsauga), „Kappa“ (NPM tarpinis serveris), „Makara“ („LinkedIn Dust.js I18N“) ir „Adaro“ („LinkedIn Dust.js“ šablonai).

Krakenas remiasi yo sugeneruoti projektus, kaip parodyta kairėje esančioje ekrano kopijoje. Kaip ir lokomotyvas, jis organizuoja savo projektus į įprastus į bėgius panašius katalogus, įskaitant modelius, valdiklius ir konfigūraciją. Sukurtas „Kraken“ susieja „Express“ kaip standartinę tarpinę programinę įrangą, apibrėžtą kaip programa, kuris tada turi savo app.use () ir app.listen () vadinamus metodus. Kiekvienas „Kraken“ serverio maršrutas gyvena savo faile, esančiame valdiklių aplanke.

Lokomotyvas. Kaip „Node.js“ žiniatinklio sistema „Locomotive“ palaiko MVC modelius, „RESTful“ maršrutus ir susitarimus dėl konfigūracijos (pvz., „Rails“), tuo pat metu sklandžiai integruodamasis su bet kokia duomenų baze ir šablonų varikliu. Lokomotyvas remiasi „Express and Connect“, kuris yra paprastas tarpinės programinės įrangos klijų pagrindas, kurį naudoja daugybė „Node.js“ rėmų.

Lokomotyvas prideda prie „Express“ panašios į „Ruby on Rails“ struktūrą, kurią galite pamatyti aukščiau esančiame paveikslėlyje, kurios kitaip trūksta. Lokomotyvo rodiniai dažnai yra įterpti „JavaScript“ (html.ejs) failai, kaip parodyta čia, tačiau „Locomotive“ taip pat palaiko „Jade“ ir kitus suderinamus „Express“ šablonų variklius. „REST“ funkciją valdo maršrutai, kaip paprastai būna „Express“ pagrindu veikiančiuose serveriuose. Su lokomotyvu galite naudoti bet kokį duomenų bazės ir ORM (objektų-reliacijų atvaizdavimas) sluoksnį. Vadovas parodo, kaip naudoti „MongoDB“ su „Mongoose“, taip pat kaip dirbti su „Passport“ vartotojo autentifikavimui.

Meteoras. „Meteor“ suteikia jums radikaliai paprastesnį būdą kurti realaus laiko mobiliąsias ir žiniatinklio programas vien tik naudojant „JavaScript“ iš vienos kodų bazės. Užuot siuntęs HTML per laidą, „Meteor“ siunčia duomenis iš serverio klientui pateikti. Be to, kad „Meteor“ veikia savarankiškai, jis gali integruotis su „AngularJS“ ir „React“. „Meteor“ nėra panašus į „Express“, nors jis taip pat yra pastatytas ant „Node.js“ ir palaiko „Handlebars“, „Blaze“ ir „Jade“ šablonus.

„Meteor“ leidžia greitai kurti prototipus ir sukuria kelių platformų (žiniatinklio, „Android“, „iOS“) kodą. Ji integruojasi su „MongoDB“, naudodama paskirstytų duomenų protokolą ir „public – subscribe“ modelį, kad automatiškai perduotų duomenų pakeitimus klientams, nereikalaujant iš kūrėjo rašyti jokio sinchronizavimo kodo. Klientui „Meteor“ priklauso nuo „jQuery“ ir gali būti naudojamas su bet kuria „JavaScript“ vartotojo sąsajos valdiklių biblioteka.

„Meteor“ sukūrė „Meteor Development Group“ - startuolis, kurį inkubuoja „Y Combinator“. „Meteor“ dabar yra pakankamai subrendęs, kad palaikytų pusę tuzino mokomųjų knygų. Projektas „GitHub“ atkreipė daugiau nei 32 000 žvaigždžių.

Pati „Meteor“ yra nemokama atvirojo kodo programinė įranga, tačiau „Meteor“ grupė iš jos uždirba pardavinėdama „Meteor Galaxy DevOps“ prenumeratas, kurios apima AWS serverio vietą ir pagrindinį „Meteor“ palaikymą, ir atskirą „Premium“ palaikymo prenumeratą.

Burės.js. Naudodami „Sails“ galite kurti pritaikytas, įmonės lygio „Node.js“ programas. Jis sukurtas tam, kad imituotų pažįstamą modelių, vaizdų valdiklių (MVC) modelį, pvz., „Ruby on Rails“, tačiau palaiko šiuolaikinių programų reikalavimus: duomenimis pagrįstos API su keičiama, į paslaugas orientuota architektūra. Tai ypač naudinga kuriant pokalbių programas, realaus laiko informacijos suvestines ar daugelio žaidėjų žaidimus, tačiau ją galite naudoti bet kuriam interneto programos projektui. „Sails“ palaiko „WebSockets“ ir automatiškai siunčia „socket“ pranešimus į jūsų programos maršrutus.

Kaip ir „Rails“, „Sails“ vertina sutartinę konfigūraciją, teikia generatorius ir pastolius, kad greitai būtų galima sukurti REST API iš brėžinių, ir naudoja MVC / aktyvaus įrašo dizaino modelį. „Sails“ yra pastatytas ant „Express“ ir naudoja „Waterline“ savo ORM, palaikant ORM prisijungimus. Vandens linija palaiko tiek SQL, tiek NoSQL duomenų bazes.

„Sails“ yra galinė sistema, sukurta taip, kad ji būtų suderinama su bet kuria išorine žiniatinklio sąranga, pvz., „Angular“ arba „Backbone“, ar mobiliuoju įrenginiu, pvz., „IOS“ ar „Android“, kurie jums patinka arba kuriuos jums reikia palaikyti. „Sails.js“ darbuose yra viena knyga, vis dar tik iš dalies sukomplektuota.

HTML5 / „JavaScript“ sistemos

Tradiciškai mes galvojame, kad „JavaScript“ bibliotekos ir sistemos veikia kaip naršyklės. Kaip jau minėjau anksčiau, kai kurie iš jų - „jQuery“, „Dojo“ ir „MooTools“ - atsirado 2000-ųjų viduryje pirmiausia tam, kad būtų lengviau rašyti „Dynamic HTML“ ir „Ajax“. Kai kurie iš jų nuo tada išsiplėtė į papildomas funkcijų sritis, tokias kaip vartotojo sąsajos valdikliai ir mobiliųjų įrenginių sąsajos.

Kiti atsirado visai neseniai. „AngularJS“ yra „front-end“ sistema, pratęsianti HTML žymėjimą dinaminiams rodiniams ir duomenų įrišimui. „Backbone.js“ ir „Ember“ yra skirti kurti vieno puslapio interneto programas. „React“ yra skirta vartotojo sąsajai arba rodiniui kurti, paprastai skirta vieno puslapio programoms.

Dar kitos sistemos siekia siauresnes specializacijos sritis. D3 atlieka duomenų vizualizaciją ir animacijas. „Socket.IO“ diegia realaus laiko žiniatinklio programas. Išjungimas yra aukšto lygio būdas susieti duomenų modelį su žiniatinklio vartotojo sąsaja. „Polymer“ siūlo lengvą „cukravimo“ sluoksnį ant žiniatinklio komponentų API, kad padėtų kurti savo žiniatinklio komponentus. Pabraukimas yra bendrojo naudojimo biblioteka.

Kaip ir galite tikėtis, jūs turite gėdą dėl turtų, kuriuos galite pasirinkti kliento žiniatinklio plėtrai.

KampinisJS. „AngularJS“ (arba tiesiog „Angular“, tarp draugų) yra „model-view-neatkarīgi“ (MVW) „Java Ajax“ sistema, pratęsianti HTML žymėjimą dinaminiams rodiniams ir duomenų įrišimui. „Angular“ yra ypač naudinga kuriant vieno puslapio interneto programas ir susiejant HTML formas su modeliais ir „JavaScript“ valdikliais.

Keistai skambančiu modeliu-vaizdu-bet kokiu modeliu bandoma įtraukti modelio-vaizdo valdiklio, modelio-vaizdo-vaizdo modelio (MVVM) ir modelio-rodinio-pateikėjo (MVP) modelius po vienu monikeriu. Nors programuotojai mėgsta ginčytis dėl šių trijų glaudžiai susijusių modelių skirtumų, „Angular“ kūrėjai nusprendė atsisakyti diskusijos.

Iš esmės „Angular“ automatiškai sinchronizuoja duomenis iš jūsų vartotojo sąsajos (rodinio) su „JavaScript“ objektais (modeliu), susiejant dvipusius duomenis. Norėdami padėti geriau struktūrizuoti savo programą ir palengvinti jos testavimą, „Angular“ moko naršyklę, kaip atlikti priklausomybės įvedimą ir valdymo inversiją.

„Angular“ sukūrė „Google“ ir ji buvo atvira pagal MIT licenciją. „GitHub“ saugykloje yra daugiau nei 47 000 žvaigždžių ir 22 000 šakių. „Made with Angular“ demonstruoja šimtus svetainių, sukurtų naudojant „Angular“, iš kurių daugelis yra aukšto lygio žiniatinklio ypatybės.

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