Sobes.tech
Junior

Šta su ES moduli?

sobes.tech АИ

Одговор од АИ

ES-модули су стандардни начини за организовање кода у JavaScript-у, засновани на синтакси import и export.

Основне карактеристике:

  • Стандард: Дел спецификације ECMAScript, подржан од стране већине савремених прегледача и окружења за извршавање као што је Node.js.
  • Јасно управљање зависностима: Модуле јасно наводе које вредности експортују и које увозе из других модулa.
  • Статичка структура: Зависности модулa се одређују у фази компилације (или парсирања), а не током извршавања. Ово омогућава алатима за статичку анализу, као што су бандлери (Webpack, Rollup), да оптимизују код.
  • Изолација: Свакa променљива, функција или класа, објављена унутар модула, по подразумевану су локалне за тај модул. Да би биле доступне изван, морају јасно бити експортиране.
  • Подршка за асинхроност: Модуле могу да се учитавају асинхроно у прегледачима, без блокирања учитавања странице.

Синтакса:

  • Експорт:
    // app.js
    export const myVariable = 123; // Именовани експорти
    export function myFunction() { // Именовани експорти
      console.log('Hello from module!');
    }
    export default class MyClass { // Експорт по подразумеваној вредности
      constructor() {
        console.log('MyClass instance created');
      }
    }
    
  • Импорт:
    // main.js
    import { myVariable, myFunction } from './app.js'; // Именовани увози
    import MyDefaultClass from './app.js'; // Увоз по подразумеваној вредности
    
    console.log(myVariable); // 123
    myFunction(); // Hello from module!
    const instance = new MyDefaultClass(); // MyClass instance created
    

Поређење са CommonJS (Node.js):

Особина ES-модули CommonJS
Синтакса import, export require, module.exports, exports
Зависности Статичне (одређују се пре извршавања) Динамичке (одређују се током извршавања)
Учитавање Асинхроно (у прегледачима) Синхроно
this у корену undefined module.exports
Подршка Браузери, Node.js (по подразумевано од верзије 13.2, преко флага --experimental-modules пре тога) Углавном Node.js

Користећи ES-модуле се препоручује као савремени приступ за фронтенд развој због њихове стандардизације, боље подршке алатима и могућности статичке анализе.