JS (alebo aj Typescript) - Common JS - vnáranie modulov

Ako na vnorené moduly v CommonJS?

Príklad chcem mať dva súbory:

1. Text.ts v ktorom mám modul obsahujúci funkcie na prácu s textom
2. Text.Regex.ts a doňho chcem vnoriť podmodul v ktorom chcem mať funkcie na prácu s Regexpami. Dalo by sa to spraviť tak že ich spojím do jedného súboru a vnorím do seba, ale ja to chcem mať rozdelené do dvoch (alebo aj viacerých). CommonJS už používam niekoľko rokov, ale teraz robím refactoring hlavnej libky. A hľadám spôsob ako to zmysluplne upratať. Veľmi sa mi páči ako to má riešené .NET lenže CommonJS mi hádže polienka pod nohy a neumožňuje mi hierarchicky vnárať moduly do seba (ak to teda nechcem mať narvaté všetko v jednom súbore ako prasa). Webpack to má žiaľ trochu nedomyslené

Kedysi keď som som používal vlastné riešenie + preprocessor to bolo jednoduché. Ako moduly som používal plain objekty a tie sa dali do seba ľubovolne vnárať príklad:


Text.js:
Kód: [Vybrat]
var Text = Text || {};

Text.replaceAll = function() {
    ...
}

...ďalšie funkcie rovnakým spôsobom

Text.Regex.js:
Kód: [Vybrat]
var Text = Text || {};
Text.Regex = Text.Regex || {};
Text.Regex.excape = function() {
    ...
}
Text.Regex.match = ...ďalšie funkcie

Problém u tohoto riešenia je len v tom, že to nie sú skutočné moduly a tiež že sa dajú funkcie prepisovať. Vedel by mi dakto vysvetliť ako vnboriť moduly pekne do seba a zároveň ich mať rozdelené do viacerých súborov?
« Poslední změna: 12. 01. 2020, 18:43:59 od Petr Krčmář »