2013-12-04 4 views
3

У меня есть путаница в том, как продолжить мой проект. Я разрабатываю корпоративное приложение, в котором должно быть написано множество модулей. Большинство модулей будут использовать множество плагинов jQuery для создания сложных сеток, рисовать графики для разных целей, что означает, что модули будут добавлять в DOM divs, tables и т. Д.Объявление пространства имен jQuery и модульный подход

Я хочу зарезервировать пространство имен, так как это будет большое приложение. Для этого я наткнулся на прототип метода и самопроизводящая анонимная функция. Самонастраивающаяся анонимная функция, кажется, рекомендуется много.

Моих вопросы

  1. ли самостоятельно выполняет функцию повторно используемой? Я имею в виду это немедленно выполняется так что позволяет сказать, модуль рисует сложную сетку для данного файла JSON. Итак, смогу ли я использовать ту же самоисполняющуюся анонимную функцию для 3 разных файлов JSON, как и плагин jQuery?
  2. Когда будет написано много модулей, все они будут выполняться при запуске. Будет ли это использовать Ram/Processor? Разве это не значит, что модули нужно вызывать, когда это необходимо? какое значение будет делать самопроизвольное исполнение?

Мой Объем проекта:

Пожалуйста, помогите мне понять это сам выполнение вещь в моей компетенции проекта, который мой проект занимает основное пространство имён говорят «MYAPP» и и его модули, как Myapp.moduleA, Myapp.moduleB.MyApp будет запускать свои модули по клику и т. Д. Что для меня лучше всего подходит?

прямоприменяемых Anonymous Func

(function(skillet, $, undefined) { 
    //Private Property 
    var isHot = true; 

    //Public Property 
    skillet.somevar = "Bacon Strips"; 

    //Public Method 
    skillet.draw = function() { 
     //Draw a grid 
    }; 

    //Private Method 
    function _grid() { 
     // 
     } 
    } 
}(window.skillet = window.skillet || {}, jQuery)); 
+0

http://www.adequatelygood.com/JavaScript-Module-Pattern -In-Depth.html –

+0

http: // addyosmani.ком/ресурсы/essentialjsdesignpatterns/книга/# modulepatternjavascript –

ответ

2

Вы не можете повторно использовать самостоятельно выполняет функцию, она просто выполняет сразу и это все.

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

Возможный подход заключается в следующем:

var MYNAMESPACE.Object = (function(){ 
    // private methods 
    var somemethod = function(){}; 

    // public methods 
    return { 
     somepublicmethod: function(){} 
    }; 
})(); 

Теперь вы можете называть это так:

MYNAMESPACE.Object.somepublicmethod(); 

Как для выполнения при запуске. Если вы только создаете методы и не делаете ничего в своей декларации, это не повлияет на производительность слишком сильно, если у вас нет действительно большого количества модулей. Если это так, вам следует, вероятно, изучить шаблон асинхронного загрузчика модулей (AMD). RequireJS является хорошим примером того, что: http://requirejs.org

Я написал статью о JS пространств имен, которые могут быть интересны для вас:

http://www.kenneth-truyers.net/2013/04/27/javascript-namespaces-and-modules/

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