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

Relaterte artikler