Я только начинаю работать с Node.js, Mocha и Browserify.
У меня есть модуль, который зависит от jQuery, и моя спецификация для него также зависит от jQuery. Чтобы просто сделать require('jquery')
в модуле, а не require('jquery')(window)
, я создал jsdom window
в своем файле спецификаций и назначил его global.window
:
var $;
beforeEach(function () {
var doc = jsdom.jsdom('<html><body></body></html>');
global.window = doc.createWindow();
$ = require('jquery');
...
});
Таким образом, мои спецификации могут использовать jQuery для поиска узлов DOM и проверки ожиданий, а мой модуль может использовать jQuery без необходимости явно передавать window
.
Кажется, все это работает нормально, но правильно ли это? Я много искал и не могу найти других упоминаний об использовании global.window
таким образом для перехода к jQuery. Технически я предполагаю, что window
является зависимостью для моего модуля, поэтому должен ли я явно передать его моему модулю и жить с вызовом require('jquery')(window)
вместо require('jquery')
?
Какова обычная практика создания модулей CommonJS, для которых требуется jQuery?