CommonJS- ja ES-Moduulien Yhdistäminen
Pyyhkäise näyttääksesi valikon
Node.js-projekteissa saatat kohdata sekä CommonJS- että ES-moduuleja samassa koodipohjassa. Node.js käytti alun perin CommonJS:ää (require/module.exports), mutta tukee nyt myös ES-moduuleja (import/export). Näiden kahden järjestelmän yhdistäminen voi olla haastavaa syntaksin, tiedostopäätteiden ja latauskäyttäytymisen erojen vuoksi. Yhteensopivuusongelmia syntyy, koska kaikkia ominaisuuksia ei ole saatavilla, kun tuodaan toisen tyyppinen moduuli toiseen. Sinun tulisi ymmärtää strategiat molempien järjestelmien käyttämiseen yhdessä sekä rajoitukset, joita saatat kohdata.
Yleinen strategia on valita projektillesi ensisijainen moduulijärjestelmä ja käyttää yhteensopivuusominaisuuksia vain tarvittaessa. Esimerkiksi voit pitää suurimman osan koodista CommonJS-muodossa yhteensopivuuden vuoksi vanhempien työkalujen kanssa, mutta käyttää ES-moduuleja uudemmassa koodissa tai kun tarvitset ominaisuuksia kuten import.meta.url. Node.js antaa sinun määrittää moduulityypin package.json-tiedostossa käyttämällä "type"-kenttää: "commonjs" tai "module". .cjs-päätteiset tiedostot käsitellään aina CommonJS:änä, kun taas .mjs-tiedostot ovat aina ES-moduuleja riippumatta "type"-kentästä. Tämä antaa joustavuutta yhdistää moduulityyppejä projektissa, mutta sinun tulee olla tietoinen rajoituksista ja eroista moduulien latauksessa ja suorituksessa.
math.cjs
app.mjs
Tämä koodiesimerkki näyttää, kuinka voit käyttää CommonJS-moduulia ES-moduulin sisällä Node.js:ssä. math.cjs-tiedosto käyttää CommonJS-syntaksia ja vie add-funktion muodossa module.exports.add = (a, b) => a + b;. Tämä funktio lisää kaksi lukua ja palauttaa tuloksen.
app.mjs-tiedosto on ES-moduuli. ES-moduulit eivät voi käyttää require-funktiota suoraan, joten tuot sisään createRequire-funktion sisäänrakennetusta module-paketista. Kutsumalla createRequire(import.meta.url) luot require-funktion, joka toimii nykyisen ES-moduulitiedoston kontekstissa. Tämän jälkeen käytät tätä require-funktiota tuodaksesi CommonJS-moduulin (math.cjs).
Kun kutsut math.add(2, 3), koodi tulostaa konsoliin arvon 5. Tämä lähestymistapa mahdollistaa CommonJS- ja ES-moduulien yhdistämisen samassa projektissa, jolloin voit hyödyntää kummankin järjestelmän vahvuuksia tarpeen mukaan.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme