Modules are a way to organize and encapsulate code into reusable, manageable pieces. They help in structuring large codebases by dividing the code into smaller, logical parts that can be easily maintained and reused.
Key Features of Modules
- Encapsulation: Variables and functions declared within a module are not accessible from outside the module unless explicitly exported. This helps in avoiding global namespace pollution.
- Reusability: Modules can be reused across different parts of an application or even in different projects, promoting code reuse and consistency.
- Maintainability: By breaking down code into modules, you make the codebase more organized, making it easier to maintain, test, and update.
- Scoping: Each module has its own scope, which prevents conflicts between variables and functions with the same name in different modules.
Creating a Module (ES6 Syntax)
// math.js // Exporting functions export function add(a, b) { return a + b; } // Exporting a constant
export const PI = 3.14159;
Importing a Module
Importing Specific Functions and Constants
// main.js
// Importing specific functions and constants
import { add, PI } from './math.js';
console.log(add(2, 3)); // 5
console.log(PI); // 3.14159
Importing All Exports from a Module
// main.js // Importing everything as an object import * as math from './math.js';
console.log(math.add(2, 3)); // 5
console.log(math.PI); // 3.14159
Default Export and Import
If a module has a default export, it can be imported without using curly braces.
// math.js // Default export export default function subtract(a, b) { return a - b; }
// main.js
// Importing the default export
import subtract from ‘./math.js’;
console.log(subtract(5, 3)); // 2
Additional Information
- Module Formats: In addition to ES6 modules, there are other module systems like CommonJS (used in Node.js) and AMD (Asynchronous Module Definition).
- Benefits of Using Modules: Modules help in improving code organization, making codebases more manageable, and reducing the likelihood of bugs due to namespace conflicts.