TL; Первый - как RequireJS был разработан для работы (используйте его); второй - нет.
Подробнее:
Похоже, вы путаете RequireJS с узла требуется.
Во втором случае вы почти меняете направление цепи зависимостей, экспортируя назад (в зависимости от того, какая зависимость).
Это действительно будет работать большую часть времени:
exports.pubFunc = pubFunc;
поскольку что:
- JavaScript объекты передаются по ссылке, поэтому свойство будет добавлено к
exports
объекта, проведенного RequireJS; и
- RequireJS будет продолжать распространять модифицированный объект
exports
всякий раз, когда требуется exports
.
Однако это полностью зависит от кэширования RequireJS. Как оптимизация, RequireJS хранит экспорт модулей, а не каждый раз загружает файл; следовательно, кэшированная версия exports
перераспределяется (в комплекте с добавленным вами свойством).
Следовательно, это сломается, когда кешированный объект не будет передан, например, в разных RequireJS contexts.
Вы должны рассматривать импорт как неизменный, даже если вы можете их изменить.
Вы спрашиваете, есть ли вторая форма _possible_? Или если это рекомендуется? –
@ PaulPhillips, да – Lanston