Sobes.tech
Junior

Модулҳои ES чистанд?

sobes.tech AI

Ҷавоб аз AI

Модулҳои ES — ин усули стандартӣ барои ташкил кардани коди JavaScript мебошанд, ки асос ёфтаанд ба синтаксиси import ва export.

Хусусиятҳои асосӣ:

  • Стандарт: Як қисми спецификацияи ECMAScript, ки аз ҷониби бештари браузерҳои муосир ва муҳитҳои иҷроиш, ба монанди Node.js, дастгирӣ мешавад.
  • Идоракунии равшанонаи вобастагиҳо: Модулҳо равшан нишон медиҳанд, ки кадом арзишҳоро экспорти мекунанд ва кадомҳоро аз дигар модулҳо ворид мекунанд.
  • Структура статикӣ: Вобастагиҳои модулҳо дар марҳилаи компилятсия (ё парсинг) муайян карда мешаванд, на дар вақти иҷро. Ин ба воситаи воситаҳои таҳлили статикӣ, монанди бандлёрҳо (Webpack, Rollup), имкон медиҳад, ки кодро оптимизатсия кунанд.
  • Изоляция: Ҳар тағйирёбанда, функсия ё синфи, ки дар дохили модул эълон шудааст, ба таври пешфарз маҳаллӣ барои ҳамин модул аст. Барои дастрас шудан ба берун, онҳо бояд равшан экспортида шаванд.
  • Дастгирии асинхронӣ: Модулҳо метавонанд дар браузерҳо асинхронона бор карда шаванд, бе бастани боркунии саҳифа.

Синтаксис:

  • Экспорт:
    // 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-модулҳо ҳамчун рӯҳияи муосир барои рушди фронтенд тавсия дода мешавад, ки бо стандартикунонии онҳо, дастгирии беҳтар аз ҷониби воситаҳо ва имконияти таҳлили статикӣ шароит фароҳам меорад.