Архитектура javascript приложений 
		
		
		
		Здравствуйте. Недавно посмотрел презентацию  Scalable JavaScript Application Architecture. Тема очень заинтересовала.  
	Часто приходится писать некий javascript код ("костыли") под уже готовый сайт . Иногда это небольшие фрагменты, но бывает, что количество кода сильно разрастается. Поэтому хотелость бы узнать какие существуют методы/способы построения архитектуры javascript приложений. Хотелось бы весь этот код грамотно структурировать... Может кто-нибудь подсказать где можно ещё найти инфы по данной тематике, т.е. по архитектуре построения приложений на javascript.  | 
	
		
 интересно, как та презентация связана с масштабируемостью... что же касается архитектуры, она важна в сложных, постоянно меняющихся проектах, над которыми работает не один программист. В большинстве же случаев достаточно не писать код как прийдется: не связывать компоненты между собой без необходимости; использовать "классы"; задумываться над тем, что этот код надо будет потом править, отделять вид от представления; выделять (extract) компоненты и т.д. Здесь, скорее всего в тему будет Рефакторинг Фаулера 
	Под классами имеется в виду нечто подобное, если что: 
function MyClass(){ ... }
MyClass.prototype.method = function(){ ... };
но если очень интересует, могу попробовать подумать, вот только именно про js что-то ничего особо не вспоминается, ни книга, ни фреймворк (может не спроста?). Из общего, в голову приходят паттерны (хотя не все паттерны архитектурные, конечно же) и вспоминается книга Фаулера, которую я еще не читал. В качетсве вступления к паттернам могу порекомендовать вот эту книгу. Она не столько описывается сами паттерны, сколько рассказывает, каких их самому придумывать, по каким принципам они устроены. Правда значимость паттернов в книге имхо несколько переоценена. Хм, даже ссылку на русском нашел и еще вспоминается БЭМ, хотя это уже по поводу верстки. Вот только для каких проектов оно имеет смысл - я хз, но для яндекс - определенно имеет :)  | 
	
		
 Про паттерны и JS можно почитать в JavaScript Patterns. 
	 | 
	
		
 Спасибо за развёрнутый ответ. Использую классы, стараюсь применять, где это действительно необходимо, observer паттерн. Так же при изменинии интерфейса (html кода) реализую что-то типа MVC паттерна. Т.е. есть "модель" она же subject  и есть представление - это части html интерфеса. И при возникновении событий в элементах эти события передаются в "модель".  
	В архитектуре, которая меня заинтересовала (по указанной выше ссылке) понравилась идея модулей и песочницы. Спасибо за предоставленные ссылки.  | 
	
		
 Здравствуйте. 
	Тоже интерисуюсь этим вопросом, но немного по другой части. При таком способе построения архитектуры многие классы предстают в виде js-модулей. Т.е само понятие "класс" пропадает ( особенно, если в дополнение использовать, например, blackbone.js ). Вопрос: как можно это показать на диаграммах (например, UML)  | 
	
		
 up 
	 | 
	
		
 Цитата: 
	
 Цитата: 
	
 Цитата: 
	
  | 
	
		
 Спасибо за отклик. 
	Ну, взять тот же пример от azproduction (http://habrahabr.ru/blogs/javascript/123635/): 
var Module1 = {
   "init": function ($) {
      $.on('event', function (e) { // $ - не jQuery, это экземпляр sandbox
         console.log(e.data);
      });
   }
};
    
var Module2 = {
   "someAction": function ($) { // $ - не jQuery
      $.trigger('event', 'data');  
   }
};
Каким образом я могу показать это на UML? Попробую предположить использование диаграммы компонентов, но ведь js-модули бывают совсем не большие и скорее подходят на замену классам, чем компонентам.  | 
	
		
 lenok_sm, подход azproduction к модулям излишне усложнен.  
	если вам нужен какой-то функционал из другого файла просто подключайте его раньше вашего кода. "класс" - это шаблон обьекта [+ конструктор] модуль - это набор функционала.  | 
	
		
 Цитата: 
	
 
//инкапсуляция на основе замыкания
(function() {
	//объект/класс/конструктор Class
	var Class = function(id) {
		this.id = id;
	};
	//члены класса
	Class.prototype = {
		//свойство класса
		property : true,
		//метод калсса
		method : function() {
			return this.id;
		}
	};
	//экземпляр класса
	var foo = new Class(10);
	// метод экземпляра класса
	foo.method();
}());
PS: UML и JS слишком уж утопично, как мне кажется только время впустую потратите. т.к. псевдокод будет неполным, а генерация кода практически бесперспективна.. Цитата: 
	
  | 
| Часовой пояс GMT +3, время: 15:35. |