Sobes.tech
Junior

რა არის ES მოდულები?

sobes.tech AI

პასუხი AI-სგან

ES მოდულები — ეს არის სტანდარტული მეთოდი კოდის ორგანიზაციისთვის JavaScript-ში, რომელიც დაფუძნებულია import და export სინტაქსზე.

ძირითადი მახასიათებლები:

  • სტანდარტი: ECMAScript-ის ნაწილი, რომელსაც მხარს უჭერენ თანამედროვე ბრაუზერები და გარემოები, როგორიცაა Node.js.
  • მკვეთრი დამოკიდებულების მართვა: მოდულები მკაფიოდ აღნიშნავენ, რომელი მნიშვნელობები ექსპორტირებენ და რომელი იმპორტირებენ სხვა მოდულებიდან.
  • სტატიკური სტრუქტურა: მოდულების დამოკიდებულებები განსაზღვრულია კომპილაციის (ან პარსინგის) ეტაპზე, არა შესრულების დროს.
  • გამოყოფა: თითოეული ცვლადი, ფუნქცია ან კლასი, რომელიც გამოქვეყნებულია მოდულში, ჩვეულებრივ, ადგილობრივი არის ამ მოდულისთვის. მათ გასავლელად, უნდა იყოს მკაფიოდ ექსპორტირებული.
  • ასინქრონული მხარდაჭერა: მოდულები შეიძლება ასინქრონულად ივირთოს ბრაუზერებში, გვერდის ჩატვირთვისას ბლოკის გარეშე.

სინტაქსი:

  • ექსპორტი:
    // 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-ის ინстанცია შექმნილია
    

შედარება CommonJS-თან (Node.js):

მახასიათებელი ES-модуლები CommonJS
სინტაქსი import, export require, module.exports, exports
დამოკიდებულებები სტატიკური (განსაზღვრული შესრულებამდე) დინამიური (განსაზღვრული შესრულების დროს)
ჩატვირთვა ასინქრონული (браузერებში) სინქრონული
this ძირითადი undefined module.exports
მხარდაჭერა ბრაუზერები, Node.js (სტანდარტულად 13.2 ვერსობიდან, --experimental-modules ფლაგით ადრე) ძირითადად Node.js

ES-модуლების გამოყენება რეკომენდირებულია თანამედროვე ფრონტენდ განვითარებისათვის, მათი სტანდარტიზაციის, ინსტრუმენტების უკეთ მხარდაჭერის და სტატიკური ანალიზის შესაძლებლობის გამო.