2013-11-30 1 views
7

Как я могу обмениваться библиотекой между angularjs и node.js?Шаблон для обмена библиотекой между angularjs и node.js

Например, служба angularjs часто является многоразовой частью кода. Давайте возьмем библиотеку URL в качестве примера (выделите и создайте URL-адреса).

Эта же библиотека должна использоваться в node.js.

Мое ограничение состоит в том, что я хочу поделиться библиотечным кодом, но я не хочу ограничивать себя какой-либо загрузкой библиотеки на стороне браузера. Поэтому, если мне нужно использовать RequireJS в браузере, мне нужно отключить любую загружаемую часть, чтобы ее можно было контролировать в другом месте.

Итак, как мне поделиться кодом?

ответ

8

То, что вы увидите во многих разных местах, поддерживающих несколько сред, - это перенос всего возвращаемого значения из вашей «службы» в параметр, переданный функции инициализации из закрытия. Один улов, который следует иметь в виду с угловым, заключается в том, что у службы, вероятно, не должно быть других зависимостей, чтобы оставаться агностиком среды (если это был простой служебный файл, например, конфликт вряд ли возникнет).

В качестве примера рассмотрит:

(function(myService){ 

    if (typeof module !== 'undefined' && module.exports) { 
    module.exports = myService; 
    } else if(angular){ 
    angular.module('yourModule', []) 
    .factory('serviceNameHere', function(){ return myService; }); 
    } else { 
    window.myService = myService; 
    } 

}(function(){ 
    function foo(){/* Do something */} 
    function bar(){/* Do something else */} 

    return { 
    foo: foo, 
    bar: bar 
    } 
}())) 

Вы все еще можете иметь зависимости при желании через узлы требуют синтаксиса, или инъекции зависимостей угловой, но услуге, скорее всего, потребуется модификация, как она перемещается из одного проекта в другой.

Смежные вопросы