SyntaxStudy
Sign Up
JavaScript Module Design Patterns
JavaScript Intermediate 5 min read

Module Design Patterns

Module Design Patterns

Common module patterns include singleton modules (one shared instance), factory modules (return new instances), and service modules (stateless utility functions).

Example
// Singleton: module state is shared
let instance = null;
export function getInstance() {
  if (!instance) instance = new Store();
  return instance;
}

// Factory: creates new instances
export function createLogger(prefix) {
  return { log: (msg) => console.log(`[${prefix}] ${msg}`) };
}

// Service: pure functions, no state
export const mathService = {
  add: (a, b) => a + b,
  multiply: (a, b) => a * b,
};
Pro Tip

Module singletons are natural in ES modules — the module is only evaluated once, so module-level variables persist.