Explain the difference between require() and import statements.

Beginner

Answer

  • 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