Open rustam-mh opened 9 years ago
require
в node.js и modules.require
из ymodules
— это разные вещи.
Первое — про синхронное подключение commonJS
-модулей из внешнего файла, а второе — асинхронное получение модуля из текущего рантайма. Они решают несколько разные задачи.
Смысл использовать ymodules
на сервере есть только в том случае, если модули будут реиспользоваться на клиенте — такие модули будут отлично работать в любом окружении без необходимости использовать инструменты вроде browserify
. Если же переиспользование модулей не планируется, то необходимости в ymodules
для node.js нет.
Я тут не до конца согласен с @tadatuta, что бывает редко. На нодовый require стоит смотреть как fs.readFileSync
+ vm.runInContext
, это понятно. Но код в любом случае будет запущен — хоть ты его сразу весь загружай, а потом кусками исполняй, хоть постепенно кусками догружай с помощью require — разницы не много. Поэтому, хоть вы весь его загрузите сразу (например, с ym), хоть частями будете постепенно догружать (с обычным require) — бизнес логика приложения не пострадает ни сколько. Единственное, что поменяется — это внешний вид вашего кода.
Особенно это заметно (в виде профита, про который и сказал @tadatuta), если вы пытаетесь писать изоморфный код и не хотите думать про окружение. ymodules в этом случае (впрочем, как и многие другие модульные системы, умеющие постепенное исполнение по запросу) отлично подходят и для сервера, и собираются из ES6-модулей. Посмотрите на https://github.com/c9/architect (и можно на https://github.com/zxqfox/pym) — нет никаких проблем. ;-)
не увеличивается ли программа от modules.require или это все равно что использовать просто require