Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.03.2011, 16:40
Аспирант
Отправить личное сообщение для amigo* Посмотреть профиль Найти все сообщения от amigo*
 
Регистрация: 25.05.2010
Сообщений: 39

Архитектура javascript приложений
Здравствуйте. Недавно посмотрел презентацию Scalable JavaScript Application Architecture. Тема очень заинтересовала.

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

Может кто-нибудь подсказать где можно ещё найти инфы по данной тематике, т.е. по архитектуре построения приложений на javascript.
Ответить с цитированием
  #2 (permalink)  
Старый 19.03.2011, 11:20
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

интересно, как та презентация связана с масштабируемостью... что же касается архитектуры, она важна в сложных, постоянно меняющихся проектах, над которыми работает не один программист. В большинстве же случаев достаточно не писать код как прийдется: не связывать компоненты между собой без необходимости; использовать "классы"; задумываться над тем, что этот код надо будет потом править, отделять вид от представления; выделять (extract) компоненты и т.д. Здесь, скорее всего в тему будет Рефакторинг Фаулера

Под классами имеется в виду нечто подобное, если что:
function MyClass(){ ... }
MyClass.prototype.method = function(){ ... };


но если очень интересует, могу попробовать подумать, вот только именно про js что-то ничего особо не вспоминается, ни книга, ни фреймворк (может не спроста?). Из общего, в голову приходят паттерны (хотя не все паттерны архитектурные, конечно же) и вспоминается книга Фаулера, которую я еще не читал.

В качетсве вступления к паттернам могу порекомендовать вот эту книгу. Она не столько описывается сами паттерны, сколько рассказывает, каких их самому придумывать, по каким принципам они устроены. Правда значимость паттернов в книге имхо несколько переоценена. Хм, даже ссылку на русском нашел

и еще вспоминается БЭМ, хотя это уже по поводу верстки. Вот только для каких проектов оно имеет смысл - я хз, но для яндекс - определенно имеет

Последний раз редактировалось x-yuri, 19.03.2011 в 11:24.
Ответить с цитированием
  #3 (permalink)  
Старый 19.03.2011, 16:49
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Про паттерны и JS можно почитать в JavaScript Patterns.
Ответить с цитированием
  #4 (permalink)  
Старый 20.03.2011, 01:02
Аспирант
Отправить личное сообщение для amigo* Посмотреть профиль Найти все сообщения от amigo*
 
Регистрация: 25.05.2010
Сообщений: 39

Спасибо за развёрнутый ответ. Использую классы, стараюсь применять, где это действительно необходимо, observer паттерн. Так же при изменинии интерфейса (html кода) реализую что-то типа MVC паттерна. Т.е. есть "модель" она же subject и есть представление - это части html интерфеса. И при возникновении событий в элементах эти события передаются в "модель".
В архитектуре, которая меня заинтересовала (по указанной выше ссылке) понравилась идея модулей и песочницы.
Спасибо за предоставленные ссылки.

Последний раз редактировалось amigo*, 20.03.2011 в 01:17.
Ответить с цитированием
  #5 (permalink)  
Старый 11.07.2011, 23:45
Новичок на форуме
Отправить личное сообщение для lenok_sm Посмотреть профиль Найти все сообщения от lenok_sm
 
Регистрация: 11.07.2011
Сообщений: 7

Здравствуйте.
Тоже интерисуюсь этим вопросом, но немного по другой части. При таком способе построения архитектуры многие классы предстают в виде js-модулей. Т.е само понятие "класс" пропадает ( особенно, если в дополнение использовать, например, blackbone.js ).
Вопрос: как можно это показать на диаграммах (например, UML)
Ответить с цитированием
  #6 (permalink)  
Старый 13.07.2011, 17:28
Новичок на форуме
Отправить личное сообщение для lenok_sm Посмотреть профиль Найти все сообщения от lenok_sm
 
Регистрация: 11.07.2011
Сообщений: 7

up
Ответить с цитированием
  #7 (permalink)  
Старый 13.07.2011, 18:23
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от lenok_sm
При таком способе построения архитектуры многие классы предстают в виде js-модулей. Т.е само понятие "класс" пропадает
ну так покажите, что там у вас.
Сообщение от lenok_sm
особенно, если в дополнение использовать, например, blackbone.js
библиотеки-библиотеки-библиотеки не используйте их и проблем не будет
Сообщение от lenok_sm
Вопрос: как можно это показать на диаграммах (например, UML)
точно также.
Ответить с цитированием
  #8 (permalink)  
Старый 13.07.2011, 18:35
Новичок на форуме
Отправить личное сообщение для lenok_sm Посмотреть профиль Найти все сообщения от lenok_sm
 
Регистрация: 11.07.2011
Сообщений: 7

Спасибо за отклик.
Ну, взять тот же пример от 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, 13.07.2011 в 18:39.
Ответить с цитированием
  #9 (permalink)  
Старый 13.07.2011, 19:26
Аватар для vflash
Профессор
Отправить личное сообщение для vflash Посмотреть профиль Найти все сообщения от vflash
 
Регистрация: 09.07.2007
Сообщений: 304

lenok_sm, подход azproduction к модулям излишне усложнен.
если вам нужен какой-то функционал из другого файла просто подключайте его раньше вашего кода.

"класс" - это шаблон обьекта [+ конструктор]
модуль - это набор функционала.
__________________
лучшая rss читалка zzreader.com
Ответить с цитированием
  #10 (permalink)  
Старый 13.07.2011, 19:33
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от lenok_sm
js-модули бывают совсем не большие и скорее подходят на замену классам
что такое модули, классы? - это объекты, т.е. сущности которые инкапсулируют некие данные (члены класса).
//инкапсуляция на основе замыкания
(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 слишком уж утопично, как мне кажется только время впустую потратите. т.к. псевдокод будет неполным, а генерация кода практически бесперспективна..

Сообщение от vflash
подход azproduction к модулям излишне усложнен.
Идеи модульности в JS не новы и порой порождают некую избыточность кода. В целом такой подход себя оправдывает, особенно когда проект очень большой. Стоит также отметить, что использование паттернов масштабирования в JS-коде как правило признак профессионализма разработчика.

Последний раз редактировалось monolithed, 13.07.2011 в 19:50.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Облачная платформа для разработки javascript приложений Hivext Technologies Ваши сайты и скрипты 32 29.06.2010 00:37
Hivext Platforma - Платформа для JavaScript приложений Ruslan Ваши сайты и скрипты 1 23.01.2010 14:33
Разработчик JavaScript (МСК) chayka Работа 5 01.10.2009 15:44