Articles

modul de înțelegere.exporturi și exporturi în nod.js

Posted by admin

în programare, modulele sunt unități autonome de funcționalitate care pot fi partajate și reutilizate în cadrul proiectelor. Ne fac viața ca dezvoltatori mai ușoară, deoarece le putem folosi pentru a ne mări aplicațiile cu funcționalități pe care nu a trebuit să le scriem noi înșine. De asemenea, ne permit să organizăm și să decuplăm codul nostru, ceea ce duce la aplicații mai ușor de înțeles, depanat și întreținut.

în acest articol, voi examina cum să lucreze cu module în nod.JS, concentrându-se pe modul de a le exporta și consuma.,deoarece JavaScript inițial nu avea un concept de module, o varietate de formate concurente au apărut de-a lungul timpului. Iată o listă a celor principale de care trebuie să fiți conștienți:

  • formatul asynchronous Module Definition (AMD) este utilizat în browsere și utilizează o funcție define pentru a defini modulele.
  • formatul CommonJS (CJS) este utilizat în nod.js și folosește require și module.exports pentru a defini dependențe și module. Ecosistemul npm este construit pe acest format.
  • formatul modulului ES (ESM)., Începând cu ES6 (ES2015), JavaScript acceptă un format de modul nativ. Acesta utilizează un export cuvinte cheie pentru a exporta un modul API-ul public și un import cuvinte cheie pentru a-l importa.
  • sistemul.formatul de înregistrare a fost conceput pentru a suporta modulele ES6 din ES5.
  • formatul universal Module Definition (UMD) poate fi utilizat atât în browser, cât și în nod.J. S. Este util atunci când un modul trebuie să fie importate de către un număr de diferite modul incarcator.

vă rugăm să fiți conștienți de faptul că acest articol se ocupă exclusiv cu formatul CommonJS, standardul în nod.J. S., Dacă doriți să citiți în oricare dintre celelalte formate, vă recomandăm acest articol, de autor SitePoint Jurgen Van De Moere.

care necesită un modul

nod.js vine cu un set de module încorporate pe care le putem folosi în codul nostru fără a fi nevoie să le instalăm. Pentru a face acest lucru, trebuie să solicităm modulul folosind cuvântul cheie require și să atribuim rezultatul unei variabile. Acest lucru poate fi apoi folosit pentru a invoca orice metode expune modulul.,de exemplu, pentru a lista conținutul unui director, puteți utiliza modulul sistemului de fișiere și readdir metoda:

rețineți că în CommonJS, modulele sunt încărcate sincron și procesate în ordinea în care apar.

crearea și exportul unui modul

acum, să ne uităm la modul de a crea propriul nostru modul și de export-l pentru a fi utilizat în altă parte în programul nostru., Începe prin a crea un user.js fișier și adăugând următoarele:

const getName = () => { return 'Jim';};exports.getName = getName;

Acum, de a crea un index.js fișiere în același folder si adauga asta:

const user = require('./user');console.log(`User: ${user.getName()}`);

Run programul folosind node index.js și ar trebui să vedeți următoarele ieșire la terminal:

User: Jim

Deci, ce a trecut pe aici?, Ei bine, dacă te uiți la user.js fișier, veți observa că suntem definirea unui getName function, apoi folosind exports cuvinte cheie pentru a face disponibile pentru import în altă parte. Apoi, în fișierul index.js, importăm această funcție și o executăm. De asemenea, observați că în require declarație, numele modulului este prefixat cu ./, ca este un fișier local. De asemenea, rețineți că nu este nevoie să adăugați extensia de fișier.,

exportați mai Multe Metode și Valori

putem exporta mai multe metode și valori în același mod:

Și index.js:

const user = require('./user');console.log( `${user.getName()} lives in ${user.getLocation()} and was born on ${user.dob}.`);

codul De mai sus produce acest lucru:

Jim lives in Munich and was born on 12.01.1982.

Observați cum numele ne da exportate dateOfBirth variabilei poate fi orice am chef (dob în acest caz). Nu trebuie să fie același cu numele variabilei originale.,

variații în sintaxă

de asemenea, trebuie să menționez că este posibil să exportați metode și valori pe măsură ce mergeți, nu doar la sfârșitul fișierului.

De exemplu:

exports.getName = () => { return 'Jim';};exports.getLocation = () => { return 'Munich';};exports.dob = '12.01.1982';

Și datorită destructurării misiune, putem alege ce vrem să import:

const { getName, dob } = require('./user');console.log( `${getName()} was born on ${dob}.`);

Ca s-ar putea aștepta, acest busteni:

Jim was born on 12.01.1982.

Exportul de o Valoare Implicită

În exemplul de mai sus, suntem exportatori de funcții și valori individual., Acest lucru este la îndemână pentru helper funcții care ar putea fi necesare peste tot o aplicație, dar atunci când ai un modul care exporturile doar un singur lucru, e mai simplu sa folosesti module.exports:

Și index.js:

const User = require('./user');const jim = new User('Jim', 37, '[email protected]');console.log(jim.getUserStats());

codul De mai sus busteni asta:

Name: JimAge: 37Email: [email protected]

care este Diferența Între module.exporturi și exporturi?,

În călătoriile tale pe Web, s-ar putea veni peste următoarea sintaxă:

module.exports = { getName: () => { return 'Jim'; }, getLocation: () => { return 'Munich'; }, dob: '12.01.1982',};

Aici suntem atribuirea de funcții și valori vrem să exporte un exports proprietate pe module — și, desigur, acest lucru funcționează foarte bine:

const { getName, dob } = require('./user');console.log( `${getName()} was born on ${dob}.`);

Acest busteni următoarele:

Jim was born on 12.01.1982.

Deci, ce este diferența dintre module.exports și exports? Este unul doar un alias la îndemână pentru celălalt?,

ei Bine, cam, dar nu destul …

Pentru a ilustra ceea ce vreau să spun, hai să modificați codul în index.js pentru a vă conecta la o valoare de module:

console.log(module);

Aceasta produce:

după Cum puteți vedea, module a o exports proprietate. Hai sa mai adaug ceva:

// index.jsexports.foo = 'foo';console.log(module);

rezultate:

Module { id: '.', exports: { foo: 'foo' }, ...

Atribuirea de proprietăți pentru exports adaugă, de asemenea, le module.exports., Acest lucru este pentru că (inițial, cel puțin) exports este o trimitere la module.exports.

Deci, care ar trebui să folosesc?

module.exports și exports ambele la același obiect, în mod normal, nu contează pe care îl utilizați. De exemplu:

exports.foo = 'foo';module.exports.bar = 'bar';

Acest cod va avea ca rezultat modulul exportate obiect fiind { foo: 'foo', bar: 'bar' }.

cu toate acestea, există o avertizare. Orice atribuiți module.exports este ceea ce este exportat din modulul dvs.,deci, luați următoarele:

exports.foo = 'foo';module.exports = () => { console.log('bar'); };

Acest lucru ar duce doar la exportarea unei funcții anonime. Variabila foo ar fi ignorată.

dacă doriți să citiți mai multe despre diferență, vă recomand acest articol.

concluzie

modulele au devenit o parte integrantă a ecosistemului JavaScript, permițându-ne să compunem programe mari din părți mai mici. Sper că acest articol v-a oferit o bună introducere în lucrul cu ei în nod.js, precum și ajutând la demistificarea sintaxei lor.

Leave A Comment