Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele CommonJS- ja ES-Moduulien Yhdistäminen | Osio
Node.jsin perusteet

bookCommonJS- 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

math.cjs

app.mjs

app.mjs

copy

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.

question mark

Milloin CommonJS kannattaa valita ES-moduulien sijaan Node.js-projektissa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 17

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 17
some-alt