Sobes.tech
Junior

ES-modulləri nədir?

sobes.tech Süni İntellekt

AI-dan cavab

ES-modullar JavaScript-də kodun təşkilinin standart üsuludur və importexport sintaksisinə əsaslanır.

Əsas xüsusiyyətlər:

  • Standart: ECMAScript spesifikasiyasının bir hissəsidir, müasir brauzərlər və Node.js kimi icra mühitləri tərəfindən dəstəklənir.
  • Aydın asılılıq idarəetməsi: Modullar, hansı dəyərləri ixrac etdiklərini və digər modullardan hansı dəyərləri idxal etdiklərini açıq şəkildə göstərir.
  • Statik struktur: Modulların asılılıqları tərtib zamanı (və ya analiz zamanı) müəyyən edilir, icra zamanı deyil. Bu, Webpack, Rollup kimi alətlərə kodu optimallaşdırmağa imkan verir.
  • İzolyasiya: Modul daxilində elan olunan hər bir dəyişən, funksiya və ya sinif, default olaraq, həmin modul üçün yerli sayılır. Xaricdən əlçatan olması üçün açıq şəkildə ixrac edilməlidir.
  • Asinxron dəstək: Modullar brauzerlərdə asinxron yüklənə bilər, səhifənin yüklənməsini bloklamadan.

Sintaksis:

  • İxrac:
    // app.js
    export const myVariable = 123; // Adlandırılmış ixrac
    export function myFunction() { // Adlandırılmış ixrac
      console.log('Modüldən salam!');
    }
    export default class MyClass { // Default ixrac
      constructor() {
        console.log('MyClass nümunəsi yaradıldı');
      }
    }
    
  • İdxal:
    // main.js
    import { myVariable, myFunction } from './app.js'; // Adlandırılmış idxal
    import MyDefaultClass from './app.js'; // Default idxal
    
    console.log(myVariable); // 123
    myFunction(); // Modüldən salam!
    const instance = new MyDefaultClass(); // MyClass nümunəsi yaradıldı
    

CommonJS (Node.js) ilə müqayisədə:

Xüsusiyyət ES-modullar CommonJS
Sintaksis import, export require, module.exports, exports
Asılılıqlar Statik (əvvəlcədən müəyyən edilir) Dinamik (işə salınma zamanı müəyyən edilir)
Yükləmə Asinxron (brauzerdə) Sinxron
this kökdə undefined module.exports
Dəstək Brauzərlər, Node.js (versiya 13.2-dən etibarən, əvvəlcə --experimental-modules bayrağı ilə) Əsasən Node.js

ES-modulların istifadəsi, standartlaşdırılması, alətlər tərəfindən daha yaxşı dəstəklənməsi və statik analiz imkanları ilə müasir frontend inkişaf üçün tövsiyə olunan yanaşmadır.