Sobes.tech
Junior

Kas ir ES moduļi?

sobes.tech AI

Atbilde no AI

ES moduļi ir standarta veids, kā organizēt kodu JavaScript, balstoties uz import un export sintaksi.

Galvenās īpašības:

  • Standarts: Daļa no ECMAScript specifikācijas, ko atbalsta lielākā daļa mūsdienu pārlūkprogrammu un izpildes vidi, piemēram, Node.js.
  • Skaidra atkarību pārvaldība: Moduļi skaidri norāda, kuras vērtības tie eksportē un kuras importē no citiem moduļiem.
  • Statiska struktūra: Moduļu atkarības tiek noteiktas kompilācijas (vai parsēšanas) posmā, nevis izpildes laikā.
  • Izolācija: Katrs mainīgais, funkcija vai klase, kas ir deklarēta modulī, pēc noklusējuma ir lokāla šim modulim. Lai tās būtu pieejamas ārpusē, tās ir skaidri jāeksportē.
  • Asinhronā atbalsts: Moduļi var tikt ielādēti asinhroni pārlūkprogrammās, neapturējot lapas ielādi.

Sintakse:

  • Eksports:
    // app.js
    export const myVariable = 123; // Nosaukuma eksports
    export function myFunction() { // Nosaukuma eksports
      console.log('Hello from module!');
    }
    export default class MyClass { // Noklusējuma eksports
      constructor() {
        console.log('MyClass instance created');
      }
    }
    
  • Imports:
    // main.js
    import { myVariable, myFunction } from './app.js'; // Nosaukuma imports
    import MyDefaultClass from './app.js'; // Noklusējuma imports
    
    console.log(myVariable); // 123
    myFunction(); // Hello from module!
    const instance = new MyDefaultClass(); // MyClass instances izveide
    

Salīdzinājums ar CommonJS (Node.js):

Īpašība ES moduļi CommonJS
Sintakse import, export require, module.exports, exports
Atkarības Statiskas (noteiktas pirms izpildes) Dinamiskas (noteiktas izpildes laikā)
Ielāde Asinhroniska (pārlūkprogrammās) Sinhroniska
this galvenais undefined module.exports
Atbalsts Pārlūkprogrammās, Node.js (pēc noklusējuma no versijas 13.2, ar --experimental-modules karogu iepriekš) Galvenokārt Node.js

ES moduļu izmantošana ir ieteicams pieejas mūsdienu frontend izstrādē, pateicoties to standartizācijai, labākai rīku atbalstam un iespējamai statiskai analīzei.