Решил поэкспериментировать и заинклюдить сторонний js файл в главный js без exports: eval(fs.readFileSync(__dirname + '/foo.js') + '');
То, что получилось на выходе меня устраивает, но:
1) Так вообще кто-то делает?
2) Какие минусы у такого решения?
Судя по всему вы решаете ваши архитектурные проблемы через мутные хаки. Можно конечно, но это не решение.
Если модуль большой, и делает слишком много, разбейте его на несколько помельче, один делаете фасадом, и он просто будет содержать в себе набор подмодулей. Другие инстанциируете внутри и пробрасываете до них вызовы.
1. Вы. Похоже, больше, никто
2. Область видимости одна и та же, модульность идет к черту. Как, впрочем, и совместимость. К тому же, require более низкоуровенен, это возможность api, чуть ли не ядра. Т.е. будет быстрее.
Не считаю, что низкая скорость подгрузки это минус. Подгружаем 1 раз при старте приложения и занимает это меньше сек. А что с совместимостью? Помимо того, что функции и g переменные с одинаковыми именами смешаются. И почему модульность идет к черту? Ничего не мешает использовать require вместе с таким инклудом
Dark Hole: так мне и нужно, что бы 2 скрипта попали в общую область. Допустим у модуля 15-20 функций/методов/прототипов и прочего. Что бы удобней было со всем эти работать, можно разбить один модуль на несколько файлов.
Nwton: Для это можно сделать например так: https://github.com/pasaran/descript/blob/master/li...
Не то что бы это идеальный код, но он решает задачу разделения модуля на несколько файлов, которые в результате становятся одним модулем