Показать сообщение отдельно
  #363 (permalink)  
Старый 01.12.2013, 10:31
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus3
 
Регистрация: 18.11.2013
Сообщений: 275

Способ организации модулей
Как вы организуете модули в своих проектах? В ангуляре я увидел это, вроде идея то простая, но оч удобная. Всегда теперь буду использовать эту штуку:

module = new function() {
    var modules = {};

    function getParamNames(func) {
      return func.toString().match(/\((.*?)\)/)[1].match(/[\w$]+/g) || [];
    }

    function invoke(factory) {
      var injections = getParamNames(factory).map(function(name) {
        return module(name);
      });

      return factory.apply(null, injections);
    }

    return function(name, factory) {
      if (!factory) {
        var module = modules[name];
        if (!module) throw 'модуль ' + name + ' не найден';
        return module.instance || (module.instance = invoke(module.factory));
      }
      modules[name] = {
        factory : factory,
        instance: null
      };
      return this;
    }
};


  
  module('one', function() {
    function say() { console.log('im one!') }
    return {say: say}; //импорт
  });


  module('two', function() {
    function say() { console.log('im two!') }
    return {say: say}; //импорт
  });


  module('three', function(two, one) {
    function init() {
      one.say();
      two.say();
      console.log('im three, and i init!')
    }

    return {init: init}; //импорт
  });


  module('three').init(); //запускаем шайтанмашину =)


Кто не понял, модули зависимости мы запрашиваем по именам аргументов.

Последний раз редактировалось Maxmaxmaximus3, 01.12.2013 в 11:36.
Ответить с цитированием