Mik ezek, hogyan kell használni és hogyan nem kell használni
(Vegye figyelembe, hogy ez a cikk a Node.js 6.1.0 kiadás után készült.)
TL; DR
- Gondoljunk a module.exports-ra, mint arra a változóra, amelyből a required () származik. Alapértelmezés szerint ez egy üres objektum, és bármire át lehet változtatni.
- Export? Nos, magát az „exportot” soha nem adják vissza!Ez csak a module.exports hivatkozás; egy kényelmi változó, amely segít a modul szerzőinek kevesebb kódot írni. A tulajdonságokkal való munkavégzés biztonságos és ajánlott.
exports.method = function() {…}
vs.
module.exports.method = function() {…}
Egy egyszerű modul példa
Először is szükségünk van egy példára. Kezdjük egy egyszerű számológéppel:
Használat:
A modul burkolója
A Node.js belsőleg bepakolja az összes szükséges () - ed modult egy függvény burkolóba:
A modul objektum
A „ module ” változó az aktuális modult reprezentáló objektum. Ez a helyi, hogy minden modul , és ez is magán (csak elérhető modul kód):
Modul.export
- Ez az objektum hivatkozás kap visszaküldést a szükséges () hívásokból.
- A Node.js automatikusan létrehozza.
- Ez csak hivatkozás egy sima JavaScript objektumra.
- Alapértelmezés szerint üres is (kódunk egy „add ()” metódust csatol hozzá)
Két módon használhatjuk a module.exports-t:
- Nyilvános módszerek csatolása hozzá (mint ahogy a számológép példában tettük).
- Cserélje ki az egyedi objektumra vagy függvényre.
Miért cseréljük le? Csere esetén bármely más osztály tetszőleges példányát visszaadhatjuk. Itt van egy példa, amelyet az ES2015 írt:
Fent a „számológép-alap” exportál egy osztályt.
Bővítsük ki a „Számológép” osztályt, és exportáljunk egy példányt ezúttal:
Használat:
Export álnevet
- Az „export” csak egy kényelmi változó, így a modul készítői kevesebb kódot írhatnak
- A tulajdonságokkal való munkavégzés biztonságos és ajánlott.
(pl .: export.add = függvény ...)
- Az exportot NEM adja vissza a required () (a module.exports az!)
Íme néhány jó és néhány rossz példa:
Megjegyzés: Általános gyakorlat, hogy a module.exports-t egyedi függvényekkel vagy objektumokkal helyettesíti. Ha ezt megtesszük, de továbbra is szeretnénk használni az „export” gyorsírást; akkor az „export” -ot új egyedi objektumunkra kell irányítani (szintén a fenti kóddal a 12. sorban):
exports = module.exports = {}
exports.method = function() {...}
Következtetés
Az export nevű változó , amelyet nem exportálnak teljes egészében, zavaró, különösen a Node.js újoncai számára. Még a hivatalos dokumentáció is kissé furcsa:
Irányelvként, ha az export és a module.exports kapcsolata varázslatnak tűnik számodra, akkor hagyd figyelmen kívül az exportot, és csak a module.exports fájlt használd.Véleményem szerint a kód nem varázslat. A fejlesztőknek mindig törekedniük kell az általuk használt platformok és nyelvek mélyebb megértésére. Ezzel; A programozók értékes bizalmat és tudást szereznek, ami pozitívan befolyásolja a kód minőségét, a rendszer architektúráját és a termelékenységet.
Köszönöm, hogy elolvastad a hozzászólásomat. A visszajelzéseket és a gondolatokat mindig várjuk a megjegyzések részben.
lazlojuly
Kapcsolódó cikkek:
- A Node.js modulok egyedülállóak?
Források:
- Node.js Dokumentáció a modulokról
Nézze meg új blog sorozatomat az egységek teszteléséről:
Hogyan kezdje el az egység tesztelését? 1. rész
Gondolom, sokan kapcsolódhatunk a fent leírt helyzethez.
Olyan hely, ahol az egység tesztelése házimunkának számít. medium.com