Node.js и клиент используют одни и те же скрипты

Одно из теоретических преимуществ работы с 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 все еще очень нов (даже для меня), поэтому надежных ресурсов мало. Есть ли у кого-нибудь лучшее представление о том, как решить эту проблему?

12
задан David Hellsing 6 December 2010 в 21:46
поделиться