Ответ 1
Смотрите это сообщение: Преодоление разрыва модуля между Node.js и браузерами
Я изучаю, как различные концепции модулей могут применяться в приложениях NodeJS и браузера, используя требование NodeJS (очевидно, в приложениях NodeJS) и RequireJS для среды веб-браузера.
Затем мне стало ясно, что некоторые модули могут быть полезны для использования как клиентскими, так и серверными приложениями и, следовательно, могут быть повторно использованы.
Как модули могут быть разработаны так, чтобы они были совместимы с обеими этими средами?
Один синхронный и один асинхронный. Моя первая мысль заключалась в использовании асинхронного синтаксиса, а затем для определения настраиваемого модуля для NodeJS, который просто вызывает асинхронный обратный вызов, синхронно. Но как включить эмулятор RequireJS в модуль кросс-среды без использования синхронного обратного вызова NodeJS?
Смотрите это сообщение: Преодоление разрыва модуля между Node.js и браузерами
См. также набор шаблонов в https://github.com/umdjs/umd
Об async vs. sync - для define() в Node, обычно используется только синхронное выполнение функции factory, переданной для определения. Вот как requirejs работает при работе в Node.
Проект http://uRequire.org объединяет пробелы AMD и nodejs/commonJs. U может записывать либо (или оба), либо выполнить/развернуть до любой из двух или standalone.js
.