Junior
ES-modulləri nədir?
sobes.tech Süni İntellekt
AI-dan cavab
ES-modullar JavaScript-də kodun təşkilinin standart üsuludur və import və export 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.