Node.js module.export vs eksport

Mis need on, kuidas neid kasutada ja kuidas mitte kasutada

(Pange tähele, et see artikkel on kirjutatud pärast Node.js 6.1.0 väljaannet)

TL; DR

  • Mõelge moodulile.exports kui muutujale, mille saamisel nõutakse (). Vaikimisi on see tühi objekt ja sobib millekski muuta.
  • Eksport? Noh, eksporti ennast ei tagastata!See on lihtsalt viide moodulile.eksport; mugavuse muutuja, mis aitab mooduli autoritel vähem koodi kirjutada. Selle omadustega töötamine on ohutu ja soovitatav.
exports.method = function() {…} 
vs.
module.exports.method = function() {…}

Lihtne moodulinäide

Esiteks vajame koodibaasi näidet. Alustame lihtsa kalkulaatoriga:

Kasutamine:

Moodulimähis

Node.js mähib kõik nõutavad () redigeeritud moodulid funktsiooni ümbrisesse:

Mooduli objekt

Muutuja “ moodul ” on objekt, mis esindab praegust moodulit. See on iga mooduli jaoks kohalik ja ka privaatne (juurdepääsetav ainult mooduli koodilt):

Moodul.eksport

  • Nõude () kõnedelt tagastatakse objekti viide.
  • Selle loob automaatselt Node.js.
  • See on lihtsalt viide tavalisele JavaScripti objektile.
  • See on vaikimisi ka tühi (meie kood lisab sellele meetodi “add ()”

Modulit.eksport saab kasutada kahel viisil:

  1. Sellele avalike meetodite kinnitamine (nagu tegime kalkulaatori näites).
  2. Asendades see meie kohandatud eseme või funktsiooni.

Miks see asendada? Asendamisel võime tagastada mõne muu klassi suvalise eksemplari. Siin on ES2015-s kirjutatud näide:

Eespool ekspordib klass „kalkulaatorbaas“.

Laiendame klassi „Kalkulaator” ja ekspordime eksemplari seekord:

Kasutamine:

Ekspordib varjunime

  • Eksport on lihtsalt mugavuse muutuja, nii et moodulite autorid saavad vähem koodi kirjutada
  • Selle omadustega töötamine on ohutu ja soovitatav.

    (nt .: eksport.add = funktsioon ...)

  • Nõude () abil EI tagastata eksporti (moodul.eksport on!)

Siin on mõned head ja halvad näited:

Märkus. Tavaline on moodul.export asendamine kohandatud funktsioonide või objektidega. Kui me seda teeme, kuid tahaksime siiski jätkata ekspordi lühikirjeldust; siis tuleb "eksport" uuesti suunata meie uuele kohandatud objektile (seda tehakse ka ülaltoodud real 12. real):

exports = module.exports = {}
exports.method = function() {...}

Järeldus

Muutuja nimega eksport, mida ei ekspordita täielikult, on segane, eriti Node.js uustulnukate jaoks. Isegi ametlikus dokumentatsioonis on see veidi kummaline:

Suunisena võib öelda, et kui ekspordi ja mooduli.ekspordi suhe tundub teile võluväel, ignoreerige eksporti ja kasutage ainult moodulit.eksport.

Ma arvan, et kood pole maagia. Arendajad peaksid alati otsima kasutatavate platvormide ja keelte sügavamat mõistmist. Seda tehes; programmeerijad saavad väärtuslikku enesekindlust ja teadmisi, mis omakorda mõjutab positiivselt koodi kvaliteeti, süsteemi arhitektuuri ja tootlikkust.

Tänan, et lugesite minu postitust. Tagasiside ja mõtted on kommentaaride osas alati teretulnud.

lazlojuly

Seotud artiklid:

  • Kas Node.js moodulid on üksikud?

Allikad:

  • Node.js moodulite dokumentatsioon

Vaadake oma uut ajaveebisarja ühikute testimise kohta:

Kuidas alustada üksuste testimist? 1. osa

Küllap oskavad paljud meist suhestuda ülalkirjeldatud olukorraga.

Koht, kus ühikutestimist peetakse tööks. medium.com