bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

bem на backend ( ymodules и node.js реализация блоков ) #704

Open rustam-mh opened 9 years ago

rustam-mh commented 9 years ago

не увеличивается ли программа от modules.require или это все равно что использовать просто require

tadatuta commented 9 years ago

require в node.js и modules.require из ymodules — это разные вещи.

Первое — про синхронное подключение commonJS-модулей из внешнего файла, а второе — асинхронное получение модуля из текущего рантайма. Они решают несколько разные задачи.

Смысл использовать ymodules на сервере есть только в том случае, если модули будут реиспользоваться на клиенте — такие модули будут отлично работать в любом окружении без необходимости использовать инструменты вроде browserify. Если же переиспользование модулей не планируется, то необходимости в ymodules для node.js нет.

qfox commented 9 years ago

Я тут не до конца согласен с @tadatuta, что бывает редко. На нодовый require стоит смотреть как fs.readFileSync + vm.runInContext, это понятно. Но код в любом случае будет запущен — хоть ты его сразу весь загружай, а потом кусками исполняй, хоть постепенно кусками догружай с помощью require — разницы не много. Поэтому, хоть вы весь его загрузите сразу (например, с ym), хоть частями будете постепенно догружать (с обычным require) — бизнес логика приложения не пострадает ни сколько. Единственное, что поменяется — это внешний вид вашего кода.

Особенно это заметно (в виде профита, про который и сказал @tadatuta), если вы пытаетесь писать изоморфный код и не хотите думать про окружение. ymodules в этом случае (впрочем, как и многие другие модульные системы, умеющие постепенное исполнение по запросу) отлично подходят и для сервера, и собираются из ES6-модулей. Посмотрите на https://github.com/c9/architect (и можно на https://github.com/zxqfox/pym) — нет никаких проблем. ;-)