Expose a small public surface for related operations.

module-facade A facade exposes the few operations callers should use. Even with an object namespace, keep the public surface small and named clearly.

Module Facade

raw
module_facade.js
Replay: real traced execution (multi-file project)
const raw = "7";
const output = {
  parse(text) {
    return Number(text);
  },
  format(value) {
    return "value=" + value;
  },
}.format(Number(raw));

console.log("raw=" + raw);
console.log("output=" + output);
const raw = "12";
const output = {
  parse(text) {
    return Number(text);
  },
  format(value) {
    return "value=" + value;
  },
}.format(Number(raw));

console.log("raw=" + raw);
console.log("output=" + output);
const raw = "3";
const output = {
  parse(text) {
    return Number(text);
  },
  format(value) {
    return "value=" + value;
  },
}.format(Number(raw));

console.log("raw=" + raw);
console.log("output=" + output);
  1. raw ← 7, output ← value=7

    1const raw→ 7 = "7"; //@raw="12", "3"2const output→ value=7 = {3  parse(text) {4    return Number(text);5  },6  format(value) {7    return "value=" + value;8  },9}.format(Number(raw7));1011console.log("raw=" + raw7);12console.log("output=" + outputvalue=7);
    outputraw=7
    output=value=7
  1. raw ← 12, output ← value=12

    1const raw→ 12 = "12";2const output→ value=12 = {3  parse(text) {4    return Number(text);5  },6  format(value) {7    return "value=" + value;8  },9}.format(Number(raw12));1011console.log("raw=" + raw12);12console.log("output=" + outputvalue=12);
    outputraw=12
    output=value=12
  1. raw ← 3, output ← value=3

    1const raw→ 3 = "3";2const output→ value=3 = {3  parse(text) {4    return Number(text);5  },6  format(value) {7    return "value=" + value;8  },9}.format(Number(raw3));1011console.log("raw=" + raw3);12console.log("output=" + outputvalue=3);
    outputraw=3
    output=value=3