Одно из теоретических преимуществ работы с Node.js - это возможность совместного использования одних и тех же сценариев между клиентами и сервером. Это позволило бы снизить функциональность сервера, если клиент не поддерживает javascript.
Однако Node. js require ()
работает сам по себе. В загружаемом вами скрипте вы можете добавить что-то в этот
или экспорт
, которые позже будут доступны в объекте, который получил скрипт:
var stuff = require('stuff');
stuff.show();
В stuff.js:
this.show = function() {
return 'here is my stuff';
}
Таким образом, при повторном использовании этого сценария на клиенте метод .show ()
будет добавлен в область окна
. Это не то, что мы хотим здесь, вместо этого мы хотели бы добавить его в пользовательское пространство имен.
Мое единственное решение пока что-то вроде (в stuff.js):
var ns = typeof exports == 'undefined' ? (function() {
return window['stuff'] = {};
})() : exports;
ns.show = function() {
return 'here is my stuff';
}
delete ns; // remove ns from the global scope
Это работает довольно хорошо, поскольку я могу вызвать stuff.show ()
на сервере и клиенте. Но выглядит необычно. Я пробовал искать решения, но node.js все еще очень нов (даже для меня), поэтому надежных ресурсов мало. Есть ли у кого-нибудь лучшее представление о том, как решить эту проблему?