Middle
Тавзеҳ диҳед, ки паттерни модулҳо дар JavaScript чист ва дар куҷо истифода мешавад.
sobes.tech AI
Ҷавоб аз AI
Заб pattern-ҳои модул имкон медиҳад, ки коди худро инкапсулатсия кунед, бо муайян кардани интерфейси умумӣ ва хусусӣ. Ин тавассути эҷоди як минтақаи хусусӣ бо истифода аз изразҳои функсия, ки фавран даъват мешаванд (IIFE), ё синтаксиси модулҳои ES ба даст меояд.
Барномаҳо:
- Инкапсулатсия: Реализатсияи дохилиро пинҳон мекунад, танҳо API-и умумиро таъмин мекунад.
- Пешгирии ифлосшавии минтақаи глобалӣ: Тағйирёбандаҳо ва функсияҳо дар дохили модул маҳаллӣ мемонанд.
- Ташкилоти коди: Барнома ба блокҳои логикӣ тақсим мешавад, ки фаҳмиш ва нигоҳдорӣ осонтар мешавад.
- Истифодаи такрорӣ аз коди: Модулҳо метавонанд ворид ва дар қисмҳои гуногуни барнома истифода шаванд.
Маслиҳат бо истифодаи IIFE:
// Эҷоди минтақаи хусусӣ
const myModule = (() => {
// Тағйирёбандаи хусусӣ
let privateVariable = 'Ман хусусӣ ҳастам!';
// Функсияи хусусӣ
const privateMethod = () => {
console.log(privateVariable);
};
// Функсияи умумӣ
const publicMethod = () => {
console.log('Ин функсияи умумӣ аст.');
privateMethod(); // Дастрасӣ ба функсияи хусусӣ
};
// Танҳо аъзои умумиро баргардонед
return {
publicMethod: publicMethod
};
})();
// Истифодаи интерфейси умумӣ
myModule.publicMethod(); // Натиҷа: "Ин функсияи умумӣ аст." ва "Ман хусусӣ ҳастам!"
// myModule.privateVariable; // Хатогӣ - дастрас нест
// myModule.privateMethod(); // Хатогӣ - дастрас нест
Маслиҳат бо истифодаи модулҳои ES:
// module.js
// Тағйирёбандаи хусусӣ (беэкспорт)
const privateVariable = 'Ман хусусӣ дар модулҳои ES!';
// Функсияи хусусӣ (беэкспорт)
const privateMethod = () => {
console.log(privateVariable);
};
// Функсияи умумӣ (экспортшуда)
export const publicMethod = () => {
console.log('Ин функсияи умумӣ дар модулҳои ES.');
privateMethod();
};
// main.js
import { publicMethod } from './module.js';
publicMethod(); // Натиҷа: "Ин функсияи умумӣ дар модулҳои ES." ва "Ман хусусӣ дар модулҳои ES!"