JavaScript modules are a way to organize and reuse JavaScript code. Using modules can break up the code into smaller, manageable pieces, which can then be imported and used in other parts of an application as needed. This modular approach helps in maintaining a clean codebase, makes it easier to debug, and enhances code reusability.
There are different module systems in the JavaScript ecosystem. ES Modules (ESM) is the standard in the ECMAScript specification, used mainly in the browser and increasingly supported in Node.js. CommonJS is another module system that was traditionally used in Node.js.
ES Modules (ESM) are a standardized module system in JavaScript, which was introduced in ECMAScript 2015 (ES6). They allow for better organization and reusability of code by enabling the import and export of functions, objects, and primitives between different files. This module system is widely supported in modern JavaScript environments, including browsers and Node.js.
Export and Import
The export keyword labels variables and functions that should be accessible from outside the current module, allowing them to be reused in other parts of your application. The import keyword allows the import of these functionalities from other modules, enabling modular programming and code reuse.
Named export allows multiple items to be exported from a module. Each item must be imported with the same name it was exported with.
//modules.js const greet = () => { console.log('Hello World'); }; export { greet};
When importing named exports, you need to use the same names as the exports.
import { greet } from './module.js'; greet(); // Hello, World!
Default export allows a single default export per module. The item can be imported with any name.
//modules.js const greet = () => { console.log('Hello World'); }; export default greet;
When importing the default export, you can use any name.
import message from './module.js'; message(); // Hello, World!
Using Modules in HTML
When using modules in a browser, you need to include them in your HTML file. You use the type="module" attribute in the