ماژولهای جاوااسکریپت (JavaScript modules) ابزاری قدرتمند برای کپسولهسازی (encapsulation) و سازماندهی کد (organizing code) هستند که با تقسیم آن به فایلها یا ماژولهای مستقل (independent modules)، مدیریت برنامههای پیچیده (complex applications) و نگهداری (maintainability) آنها را سادهتر میکنند. این ماژولها کد را به بخشهای کوچکتر و قابل استفاده مجدد (reusable parts) تقسیم میکنند که دارای رابطهای کاملاً تعریفشده (well-defined interfaces) هستند. این رویکرد به نوشتن کدی تمیزتر (cleaner code)، کاهش تداخل در نام متغیرها و توابع (naming conflicts)، و افزایش قابلیت استفاده مجدد (reusability) کمک میکند. در میان انواع قالبهای موجود برای ماژولها (module formats)، ES6 modules بهعنوان استانداردی در جاوااسکریپت مدرن (modern JavaScript) شناخته میشوند.
در یک ES6 module، هر فایل جاوااسکریپت بهعنوان یک ماژول در نظر گرفته میشود. شما میتوانید با استفاده از کلمه کلیدی export توابع (functions)، متغیرها (variables) یا کلاسها (classes) را خروجی بگیرید (export):
// math.js (module file) export function add(a, b) { return a + b; } // main.js import { add } from './math.js'; const result = add(2, 3); console.log(result); // 5
شما میتوانید یک مقدار "default" را از یک ماژول خروجی بگیرید، که برای خروجی گرفتن از یک تابع (function) یا کلاس (class) بهعنوان خروجی اصلی ماژول بسیار کاربردی است:
// calculator.js (module file) export default function add(a, b) { return a + b; } // main.js import add from './calculator.js'; const result = add(2, 3); console.log(result); // 5
شما میتوانید مقادیر export شده را از سایر ماژولها با استفاده از دستور import فراخوانی کنید. این امکان به شما اجازه میدهد تا از قابلیتهای موجود در فایلهای دیگر، در داخل برنامه خود استفاده کنید:
// main.js import { add } from './math.js'; const result = add(2, 3); console.log(result); // 5
استفاده از JavaScript modules یکی از اصول کلیدی best practices در ساختاردهی و سازماندهی کد در برنامههای مدرن جاوااسکریپت است. این رویکرد مزایایی مانند modularity (ماژولار بودن)، maintainability (نگهداریپذیری) و reusability (قابلیت استفاده مجدد) را ارائه میدهد، که همگی برای توسعه نرمافزارهای مقیاسپذیر (scalable) و قابل نگهداری حیاتی هستند.
منبع: وبسایت میموک