JavaScript Lesson 19: Modules (Import/Export)

⚡ JavaScript CourseLesson 19 of 20 · 95% complete

Modules let you split your code into multiple files and share code between them. This is how every professional JavaScript project is organized.

Named Exports

// File: math.js
export function add(a, b) { return a + b; }
export function multiply(a, b) { return a * b; }
export const PI = 3.14159;

// OR export at the bottom
function subtract(a, b) { return a - b; }
const E = 2.71828;
export { subtract, E };

// File: main.js
import { add, multiply, PI } from "./math.js";

console.log(add(2, 3));       // 5
console.log(PI);              // 3.14159

// Import with alias
import { add as addNumbers } from "./math.js";

// Import everything
import * as MathUtils from "./math.js";
console.log(MathUtils.PI);

Default Export

// File: Calculator.js
class Calculator {
  add(a, b) { return a + b; }
  subtract(a, b) { return a - b; }
}

export default Calculator;  // one default per file

// File: main.js
import Calculator from "./Calculator.js";  // any name!
const calc = new Calculator();
console.log(calc.add(10, 5));  // 15

Using Modules in HTML

<!-- Add type="module" to your script tag -->
<script type="module" src="main.js"></script>

<!-- Inside main.js you can now import -->
// import { add } from "./math.js";

Real-World Pattern

// utils/validation.js
export const isEmail = (str) => /\S+@\S+\.\S+/.test(str);
export const isPassword = (str) => str.length >= 8;

// utils/formatters.js
export const formatDate = (date) => date.toLocaleDateString();
export const formatCurrency = (n) => `$${n.toFixed(2)}`;

// main.js
import { isEmail, isPassword } from "./utils/validation.js";
import { formatCurrency } from "./utils/formatters.js";

console.log(isEmail("test@example.com"));  // true
console.log(formatCurrency(9.999));        // "$10.00"

🏋️ Practice Task

Create two files: helpers.js with exported functions: capitalize(str), countWords(str), and reverseWords(str). And main.js that imports and tests all three functions with a sentence.

💡 Hint: helpers.js: export function capitalize(s) { return s[0].toUpperCase() + s.slice(1); }. Use type=”module” in HTML.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *