- require(): CommonJS module system, synchronous loading, runtime evaluation
- import: ES6 module system, static analysis, compile-time evaluation
// CommonJS (require)
const fs = require('fs');
const { readFile } = require('fs');
// ES6 Modules (import)
import fs from 'fs';
import { readFile } from 'fs';
// Dynamic import
const module = await import('./dynamic-module.js');
Key differences:
- require() can be called conditionally; import must be at top level
- import allows tree-shaking for smaller bundles
- require() is synchronous; import can be asynchronous