Modules and Namespaces
Module Facade
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
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);
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
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
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