JavaScript Modul Nomlar Makoni (Namespace)
Modul nomlar makoni obyekti (namespace object) — bu modul tomonidan eksport qilingan barcha qiymatlarni o'z ichiga olgan o'zgartirib bo'lmaydigan (immutable) obyektdir.
Namespace yaratish
Namespace obyekti quyidagi sintaksis yordamida yaratiladi:
import * as name from 'module'Nomlar makoni qanday ishlaydi?
Loyihangizda juda ko'p yordamchi funksiyalar bo'lsa, ularni bitta-bitta import qilish uzoq vaqt olishi mumkin. * as sintaksisi barcha eksportlarni bitta obyektga yig'ib beradi.
Misol:
// math.js
export const PI = 3.14
export function add(a, b) {
return a + b
}
export function multiply(a, b) {
return a * b
}
// main.js
import * as MathUtils from './math.js'
console.log(MathUtils.PI) // 3.14
console.log(MathUtils.add(2, 3)) // 5Namespace Obyektining xususiyatlari
| Xususiyat | Tavsifi |
|---|---|
| Namespace | Moduldagi barcha eksportlar yig'ilgan maxsus obyekt. |
| Faqat o'qish uchun | Eksport qilingan qiymatlarni o'qish mumkin, lekin o'zgartirib bo'lmaydi. |
| Live Binding | Agar modul ichida qiymat o'zgarsa, namespace obyektida ham u avtomatik yangilanadi. |
| Prototype | Namespace obyekti oddiy obyekt bo'lib, uning prototipi yo'q (null). |
Modul Namespace-ni qayta eksport qilish
Ba'zida bitta moduldan boshqa bir modulning barcha elementlarini qayta eksport qilish (re-export) kerak bo'ladi. Bu loyihani tartiblash uchun ishlatiladigan "Aggregator" modullarida qo'llaniladi.
Sintaksislar:
// 1. Hammasini alohida-alohida re-export qilish
export * from './math.js'
// 2. Hammasini bitta nom ostida re-export qilish (ES2020)
export * as MathUtils from './math.js'Aggregator Script nima?
Bu faqat boshqa modullardan elementlarni import qilib va darhol re-export qiladigan fayl. Bu loyihaning asosiy qismida yuzlab import qatorlari bo'lishini oldini oladi.
