Programmēšana

Katram Node.js izstrādātājam jāapgūst 10 JavaScript koncepcijas

Rahuls Matre ir programmatūras AG izstrādātāju komandas vadītājs.

Tā kā JavaScript un V8 dzinējs ir galvenie, uz notikumiem balstīta arhitektūra un mērogojamība ārpus kastes, Node.js ir ātri kļuvis par faktisko standartu tīmekļa lietojumprogrammu un SaaS produktu veidošanai. Tādi Node.js ietvari kā Express, Sails un Socket.IO ļauj lietotājiem ātri sākt lietojumprogrammu palaišanu un koncentrēties tikai uz biznesa loģiku.

Node.js JavaScript ir parādā daudz par tās milzīgo popularitāti. JavaScript ir daudzparadigmu valoda, kas atbalsta daudz dažādu programmēšanas stilu, ieskaitot funkcionālo programmēšanu, procesuālo programmēšanu un objektorientēto programmēšanu. Tas ļauj izstrādātājam būt elastīgam un izmantot dažādus programmēšanas stilus.

Bet JavaScript var būt divvirzienu zobens. JavaScript daudzparadigmas raksturs nozīmē, ka gandrīz viss ir maināms. Tādējādi rakstot Node.js kodu, jūs nevarat novērst objekta un darbības jomas mutācijas varbūtību. Tā kā JavaScript trūkst astes zvanu optimizācijas (kas ļauj rekursīvām funkcijām atkārtoti izmantot kaudzes rāmjus rekursīviem zvaniem), ir bīstami izmantot rekursi lielām atkārtojumiem. Papildus šādām kļūmēm Node.js ir ar vienu pavedienu, tāpēc izstrādātājiem ir obligāti jāraksta asinhronais kods.

JavaScript var būt labvēlīgs, ja to lieto piesardzīgi, vai bane, ja esat neapdomīgs. Strukturētu noteikumu, dizaina modeļu, galveno jēdzienu un īkšķu pamatnoteikumu ievērošana palīdzēs jums izvēlēties optimālu pieeju problēmai. Kurus galvenos jēdzienus vajadzētu saprast Node.js programmētājiem? Tālāk es dalīšos ar 10 JavaScript jēdzieniem, kas, manuprāt, ir vissvarīgākie, lai rakstītu efektīvu un pielāgojamu Node.js kodu.

Saistītais video: Node.js padomi un ieteikumi

Šajā paskaidrojuma videoklipā uzziniet vairākas metodes, kas var uzlabot jūsu mezglu izstrādes pieredzi.

JavaScript IIFE: tūlīt izsauktas funkciju izteiksmes

Tūlīt izsaukta funkcijas izteiksme (IIFE) ir funkcija, kas tiek izpildīta, tiklīdz tā ir izveidota. Tam nav nekāda sakara ar notikumiem vai asinhronu izpildi. Jūs varat definēt IIFE, kā parādīts zemāk:

(funkcija () {

// viss jūsu kods šeit

// ...

})();

Pirmais iekavu pāris funkcija () {...} iekavās esošo kodu pārveido par izteiksmi. Otrais iekavu pāris izsauc funkciju, kas izriet no izteiksmes. IIFE var raksturot arī kā sevi piesaucošu anonīmu funkciju. Tās visizplatītākais lietojums ir ierobežot mainīgā lieluma darbības jomu var vai iekapsulēt kontekstu, lai izvairītos no vārdu sadursmēm.

JavaScript slēgšana

JavaScript aizvēršana ir iekšēja funkcija, kurai ir piekļuve tās ārējās funkcijas darbības jomai pat pēc tam, kad ārējā funkcija ir atgriezusi kontroli. Aizvēršana padara iekšējās funkcijas mainīgos privātus. Turpmāk parādīts vienkāršs slēgšanas piemērs:

var skaits = (funkcija () {

var _skaitītājs = 0;

atgriešanās funkcija () {return _counter + = 1;}

})();

skaitīt ();

skaitīt ();

skaitīt ();

> // tagad skaitītājs ir 3

Mainīgais skaitīt ir piešķirta ārējā funkcija. Ārējā funkcija darbojas tikai vienu reizi, kas nosaka skaitītāju uz nulli un atgriež iekšējo funkciju. The _skaitītājs mainīgajam var piekļūt tikai ar iekšējo funkciju, kas liek tam uzvesties kā privātajam mainīgajam.

JavaScript prototipi

Katrai JavaScript funkcijai ir prototipa īpašums, ko izmanto, lai pievienotu īpašības un metodes. Šis īpašums nav uzskaitāms. Tas ļauj izstrādātājam saviem objektiem pievienot metodes vai dalībnieka funkcijas. JavaScript atbalsta mantošanu tikai ar īpašuma prototipa palīdzību. Mantota objekta gadījumā īpašums prototips norāda uz objekta vecākiem. Parasti pieeja metožu pievienošanai funkcijai ir prototipu izmantošana, kā parādīts zemāk:

funkcija Taisnstūris (x, y) {

this._length = x;

this._platums = y;

}

Taisnstūris.prototype.getDimensions = funkcija () {

atgriešanās {length: this._length, width: this._breadth};

};

Taisnstūris.prototype.setDimensions = funkcija (len, audzēts) {

this._length = len;

this._platums = audzēts;

};

JavaScript privātie īpašumi, izmantojot slēgšanu

JavaScript ļauj definēt privātos rekvizītus, izmantojot pasvītras prefiksu, kā parādīts iepriekšējā piemērā. Tomēr tas neliedz lietotājam tieši piekļūt īpašumam, kas it kā ir privāts, vai modificēt to.

Privāto īpašumu definēšana, izmantojot slēgšanu, palīdzēs jums atrisināt šo problēmu. Dalībnieka funkcijas, kurām nepieciešama piekļuve privātīpašumiem, jānosaka pašā objektā. Jūs varat izveidot privātīpašumus, izmantojot slēgšanu, kā parādīts zemāk:

funkcija Taisnstūris (_ garums, _ platums) {

this.getDimensions = funkcija () {

atgriešanās {length: _length, width: _breadth};

     };

this.setDimension = funkcija (len, audzēts) {

_ garums = len;

_ platums = audzēts

    };

}

JavaScript moduļa modelis

Moduļa modelis ir visizplatītākais JavaScript dizaina modelis, lai iegūtu brīvi savienotu, labi strukturētu kodu. Tas ļauj jums izveidot publiskas un privātas piekļuves līmeņus. Viens no veidiem, kā panākt moduļa modeli, ir parādīts zemāk:

var Direction = (funkcija () {

var _direction = 'uz priekšu'

var changeDirection = funkcija (d) {

_direction = d;

  }

return {setDirection: funkcija (d) {

mainīt virzienu (d);

console.log (_direction);

          }

  };

})();

Direction.setDirection ('atpakaļ'); // Rezultāti: 'atpakaļ'

console.log (Direction._direction);

Atklājamā moduļa modelis ir līdzīgs moduļa modelim, kurā mainīgie un metodes, kas jāatklāj, tiek atgriezti objekta burtnīcā. Iepriekš minēto piemēru var rakstīt, izmantojot modeli Atklāšanas modulis šādi:

var Direction = (funkcija () {

var _direction = 'uz priekšu';

var _privateChangeDirection = funkcija (d) {

_direction = d;

  }

atgriezties {

setDirection: _privateChangeDirection

  };

})();

JavaScript pacelšana

Pirms koda izpildes JavaScript pārvieto mainīgos un funkciju deklarācijas to darbības sfēras augšdaļā. To sauc par pacelšanu. Neatkarīgi no tā, kur kodā ievietojat funkciju un mainīgo deklarāciju, tulks tos pārvieto uz darbības jomas augšdaļu. Tas var būt vai nav tur, kur vēlaties tos. Ja nē, tad jūsu programmā būs kļūdas.

Mainīgo deklarācijas tiek apstrādātas pirms jebkura koda izpildes. Ironiski, ka nedeklarētie mainīgie nepastāv, kamēr tiem nav piešķirta vērtība. Tādējādi visi nedeklarētie mainīgie kļūst par globālajiem mainīgajiem. Lai arī funkciju deklarācijas tiek paceltas, funkciju izteiksmes netiek paceltas. JavaScript mainīgo un funkciju celšanas laikā ir prioritārā secībā.

Tālāk prioritāte tiek dota no augstākas uz zemāku:

  • Mainīgs uzdevums
  • Funkciju deklarācija
  • Mainīgas deklarācijas

Lai izvairītos no kļūdām, katras darbības jomas sākumā jāpaziņo mainīgie un funkcijas.

JavaScript karija

Karijs ir metode, kā padarīt funkcijas elastīgākas. Izmantojot saīsinātu funkciju, jūs varat nodot visus argumentus, kurus funkcija gaida, un iegūt rezultātu, vai arī varat nodot tikai argumentu apakškopu un saņemt funkciju atpakaļ, kas gaida pārējos argumentus. Turpmāk sniegts vienkāršs karija piemērs:

var myFirstCurry = funkcija (vārds) {

atgriešanās funkcija (lietotājs) {

return [vārds, ",", lietotājs] .join ("");

  };

};

var HelloUser = myFirstCurry ("Labdien");

HelloUser ("Rahul"); // Izeja: "Sveiks, Rahul"

Sākotnējo curried funkciju var izsaukt tieši, vienu pēc otra nododot parametrus atsevišķās iekavās, kā parādīts zemāk:

myFirstCurry ("Hey, wassup!") ("Rahul"); // Izeja: "Hei, wassup !, Rahul"

JavaScript izmanto, izsauc un saista metodes

Jebkuram JavaScript izstrādātājam ir svarīgi saprast atšķirību starp zvanu, pieteikties, un saistīt metodes. Trīs funkcijas ir līdzīgas, jo to pirmais arguments vienmēr ir “šī” vērtība vai konteksts, kuru vēlaties piešķirt funkcijai, kurai izmantojat metodi.

No trim zvanu ir visvieglāk. Tas ir tas pats, kas izsaukt funkciju, vienlaikus norādot tās kontekstu. Lūk, piemērs:

var user = {

nosaukums: "Rahul Mhatre",

whatIsYourName: function () {

console.log (this.name);

     }

};

lietotājs.whatIsYourName (); // Rezultāts: "Rahul Mhatre",

var user2 = {

nosaukums: "Neha Sampat"

};

user.whatIsYourName.call (lietotājs2); // Izeja: "Neha Sampat"

Pieraksti to pieteikties ir gandrīz tāds pats kā zvanu. Vienīgā atšķirība ir tā, ka jūs argumentus nododat kā masīvu, nevis atsevišķi. Ar masīviem ir vieglāk manipulēt JavaScript, atverot lielāku skaitu iespēju darbam ar funkcijām. Šeit ir piemērs, izmantojot pieteikties un zvanu:

var user = {

sveicināt: "Sveiki!",

greetUser: funkcija (lietotājvārds) {

console.log (this.greet + "" + lietotājvārds);

     }

};

var sveiciens1 = {

sveicināt: "Hola"

};

user.greetUser.call (greet1, "Rahul") // Izeja: "Hola Rahul"

user.greetUser.apply (greet1, ["Rahul"]) // Izeja: "Hola Rahul"

The saistīt metode ļauj nodot argumentus funkcijai, to neizsaucot. Jauna funkcija tiek atgriezta ar argumentiem, kas ir saistoši pirms visiem citiem argumentiem. Šeit ir piemērs:

var user = {

sveicināt: "Sveiki!",

greetUser: funkcija (lietotājvārds) {

console.log (this.greet + "" + lietotājvārds);

}

};

var greetHola = user.greetUser.bind ({sveiciens: "Hola"});

var greetBonjour = user.greetUser.bind ({sveiciens: "Bonjour"});

greetHola ("Rahul") // Rezultāts: "Hola Rahul"

greetBonjour ("Rahul") // Rezultāts: "Bonjour Rahul"

JavaScript atmiņa

Memoizācija ir optimizācijas paņēmiens, kas paātrina funkciju izpildi, saglabājot dārgu darbību rezultātus un atgriežot kešatmiņā saglabātos rezultātus, kad atkārtojas tas pats ievades kopums. JavaScript objekti uzvedas kā asociatīvi masīvi, kas atvieglo piezīmju ieviešanu JavaScript. Piemēram, mēs varam pārveidot rekursīvo faktoriālo funkciju par memoriālu faktoriālo funkciju, kā parādīts zemāk:

function memoizeFunction (func) {

var cache = {};

atgriešanās funkcija () {

var key = argumenti [0];

ja (kešatmiņa [atslēga]) {

atgriezt kešatmiņu [atslēga];

          }

cits {

var val = func.apply (tas, argumenti);

kešatmiņa [atslēga] = val;

atgriešanās val;

          }

  };

}

var fibonacci = memoizeFunction (funkcija (n)

atgriešanās (n === 0);

JavaScript metodes pārslodze

Metožu pārslodze ļauj vairākām metodēm izmantot vienu nosaukumu, bet atšķirīgus argumentus. Sastādītājs vai tulks nosaka, kuru funkciju izsaukt, pamatojoties uz nodoto argumentu skaitu. Metodes pārslodze nav tieši atbalstīta JavaScript. Bet jūs varat sasniegt kaut ko ļoti līdzīgu, kā parādīts zemāk:

function overloadMethod (objekts, nosaukums, fn) {

ja (! object._overload) {

object._overload = {};

     }

ja (! object._overload [name]) {

object._overload [nosaukums] = {};

    }

ja (! object._overload [name] [fn.length]) {

object._overload [nosaukums] [fn.length] = fn;

    }

objekts [nosaukums] = funkcija () {

ja (this._overload [name] [arguments.length])

atgriezt šo ._pārsūtīt [nosaukums] [argumenti.garums] .pielietot (šis, argumenti);

     };

funkcija Studenti () {

overloadMethod (šī, "atrast", funkcija () {

// Atrodiet studentu pēc vārda

  });

overloadMethod (šī, "atrast", funkcija (pirmā, pēdējā) {

// Atrodiet studentu pēc vārda un uzvārda

  });

}

var studenti = jauni Studenti ();

studenti.atrod (); // Atrod visus

studenti.atrod ("Rahul"); // Atrod studentus pēc nosaukuma

studenti.atrod ("Rahul", "Mhatre"); // Atrod lietotājus pēc vārda un uzvārda

Iepazīstoties ar Node.js, jūs pamanīsit, ka gandrīz katru problēmu var atrisināt daudzos veidos. Bet pareiza pieeja ir kritiska. Nepareiza pieeja radīs vairākas blakusparādības, piemēram, nevienmērīgas vai kļūdainas lietojumprogrammas vai regresijas, kas liek pārrakstīt visu loģiku. No otras puses, pareizā pieeja radīs pamatu spēcīgai, efektīvai un mērogojamai lietošanai.

Šajā rakstā aprakstītie 10 JavaScript jēdzieni ir pamati, kas jāzina katram Node.js izstrādātājam. Bet tie ir aisberga virsotne. JavaScript ir spēcīgs un sarežģīts. Jo vairāk jūs to izmantojat, jo vairāk jūs sapratīsit, cik plaši JavaScript patiešām ir. Labāka tik plašas valodas izpratne noteikti palīdzēs izvairīties no kļūdām. Pa to laiku iegūstiet pamatus, un jūs redzēsiet lieliskus rezultātus.

Rahuls Matre ir programmatūras AG izstrādātāju komandas vadītājs. Iepriekš viņš bija tehniskais arhitekts vietnē Built.io, kuru iegādājās Software AG.

Jauno tehnoloģiju forums nodrošina vietu, kur bezprecedenta dziļumā un plašumā izpētīt un pārrunāt topošās uzņēmuma tehnoloģijas. Izvēle ir subjektīva, balstoties uz mūsu izvēlētajām tehnoloģijām, kuras, mūsuprāt, ir svarīgas un interesē lasītājus. nepieņem mārketinga nodrošinājumu publicēšanai un patur tiesības rediģēt visu ieguldīto saturu. Nosūtiet visus jautājumus uz [email protected].

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