2013-11-07 3 views
2

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

Вот пример моей яваскрипта структуры:

var THESITE = THESITE || (function(){ 
    navigation = function(){ 
     var init = function(){ 
      // do navigation stuff 
     } 

     return { 
      init : init 
     } 
    }, 

    widgets = { 
     widget1 : (function(){ 
      var newWidget = function(){ 
       // do widget1 stuff 
      } 

      return { 
       newWidget : newWidget 
      } 
     })(), 
     widget2 : (function(){ 
      var newWidget = function(){ 
       // do widget2 stuff 
      } 

      return { 
       newWidget : newWidget 
      } 
     })(), 
     widget3 : (function(){ 
      var newWidget = function(){ 
       // do widget3 stuff 
      } 

      return { 
       newWidget : newWidget 
      } 
     })(); 
    }, 

    init = function(){ 
     navigation.init(); 
    } 

    return { 
     init: init, 
     navigation: navigation, 
     widgets: widgets, 
    } 
})(); 

THESITE.init(); 

И пример того, как один из этих методов будет называться:

THESITE.widgets.widget3.newWidget(); 

Является ли это способ структурирования мой Javascript практический/общее?

+1

Да, это распространено, и вот несколько других связанных структур. Преимущество вашего метода заключается в том, что он скрывает что-либо, кроме того, что вы намеренно помещаете в оператор return, это моделирование публичных/частных объявлений. Но это всего лишь симуляция, поэтому часто используются менее строгие структуры. См. Обсуждение в соответствующей теме ниже для ваших вариантов. http://stackoverflow.com/questions/247209/current-commonly-accepted-best-practices-around-code-organization-in-javascript?rq=1 –

ответ

1

Да, я бы сказал, что ваша структура распространена. Однако для более крупного проекта было бы целесообразно хранить модули/виджеты в отдельных файлах и использовать пространство имен для обеспечения того, чтобы столкновения в глобальной области не возникали. См. thread, что @ chris-allen предложил получить дополнительную информацию о хороших способах структурирования вашего кода.

+0

Я делаю что-то подобное для JS для конкретных страниц. Я расширяю 'THESITE', чтобы иметь подменю' Страница'; то есть «THESITE.Page» и включать в себя все функции, относящиеся к странице. –

+0

Я бы предложил попытаться отойти от специфических js страниц и вместо этого подумать о вашей функциональности с точки зрения компонентов, даже если конкретный компонент используется только на определенной странице. – flitig

+0

По какой причине? Поскольку я уже создаю модульность, я не думаю, что мне нужно создать больше, разделив его на отдельный JS-файл. Плюс тот факт, что отдельные JS будут увеличивать HTTP-запросы. Я смею сказать, что это может быть скорее мнение, чем лучшая практика. –

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