javascript - Hva er forskjellen mellom .js- og .mjs-filer?
Jeg har begynt å jobbe på et eksisterende prosjekt basert på Node.js. Jeg prøvde bare å forstå utførelsesflyten, hvor jeg støtte på noen *.mjs-filer. Jeg har søkt på nettet hvor jeg fant ut at disse er modulbaserte JS-filer.
Jeg vil vite hvordan det er annerledes fra *.js-filer (hvilken fordel gir det)?
Svar #1
Det indikerer en ES6-modulfil.
Node.js sitt opprinnelige modulesystem er CommonJs (som bruker require og module.exports).
Siden Node.js ble laget, har ECMAScript-modulsystemet (som bruker import og export) blitt standard, og Node.js har lagt til støtte for det.
Node.js vil behandle .cjs-filer som CommonJS-moduler og .mjs-filer som ECMAScript-moduler. Den vil behandle .js-filer som hva enn standard modulsystem for prosjektet er (som er CommonJS med mindre package.json sier "type": "module",).
Se også: Forskjeller mellom ES6-modulsystemet og CommonJs
Svar #2
.MJS-fil
mjs en utvidelse for EcmaScript-moduler
En MJS-fil er en kildekodefil som inneholder en ES-modul (ECMAScript-modul) for bruk med en Node.js-applikasjon.
MJS-filer er skrevet i JavaScript, og kan også bruke .JS-utvidelsen utenfor Node.js-konteksten.
ES-moduler lar nett- og applikasjonsutviklere organisere kode i mindre gjenbrukbare komponenter.
ECMAScript 6 (ES6) introduserte spesifikasjonen for ES-moduler, og ga en standard for å implementere moduler i JavaScript. Fra og med 2018 støtter alle store nettlesere ES-moduler.
Imidlertid dateres populariteten til modulær JavaScript seg tilbake til før ES6. Node.js, et JavaScript-kjøremiljø, brukte CommonJS som spesifikasjon for moduler. Siden så mange eksisterende applikasjoner var bygget med CommonJS, introduserte Node.js, da det la til støtte for native ES-moduler, kontroversielt MJS-filtypen for å skille de to og forhindre at applikasjoner sluttet å fungere.
MERK: Noen utviklere refererer uformelt til MJS-filer som "Michael Jackson Script"-filer.
Svar #3
For klarhet. Når det gjelder utviklere/mennesker, er det lett å skille mellom en modulfil (.mjs) og en vanlig JavaScript-fil (.js)... fordi det ikke alltid er lett å avgjøre selv om du undersøker koden i filen.
Det er også ytelsesfordeler som gir deg flere grunner til å vurdere å bruke det. V8 (JavaScript-motoren som driver Google Chrome) anbefaler bruken av .mjs, men det avhenger fortsatt av situasjonen din. Hvis du vil vite mer om fordelene, sjekk https://v8.dev/features/modules#mjs
