Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.02.2010, 22:35
Новичок на форуме
Отправить личное сообщение для trasher Посмотреть профиль Найти все сообщения от trasher
 
Регистрация: 02.02.2010
Сообщений: 1

Грамотная организация кода
Всем привет!
Собственно, разрабатываю сайты с использованием JS уже достатоно давно (использую jQuery), но вот недавно подвернулся довольно крупный проект и в связи с этим задался таким вопросом: а как наиболее правильно и грамотно структурировать код?

К примеру, у меня много обработчиков событий после $(document).ready вешается, но часть из них используется только на определенных страницах. Аналогичная ситуация с бОльшей частью кода: все функции тупо в одном файле, но юзается на странице на одной только процентов 20-30 из них. Или плевать на это: юзер загрузил файл, он попал в кэш и все, уже неважно?..

Другой пример, на странице необходимо повесить обработчики событий на нажатие клавиш. Что же, в середине страницы подключать файл с функциями для обработки нажатий клавиш, а ниже делать блок <script>, где инициализировать этот код? По-моему, не совсем изящно.

Вот как лучше устроить структуру кода, всех функций?
Как я понимаю, желательно на странице инициализировать только то, что потенциально может использоваться на ней, но какими способами можно это сделать(выстроить такую структуру)? Разбить все на классы?
С ООП в JS особо не работал, если честно.

Конечная цель: чтобы обилие функций (и в дальнейшем увеличение их кол-ва) не сказывалось на скорости работы браузера.

P.S. Кстати, что лучше использовать: bind или live? Различия между функциями знаю, но с точки зрения производительности браузера что лучше? live, вероятно, постоянно мониторит появление новых элементов -- влияет ли это как-то на скорость?

Всем спасибо за внимание.
Ответить с цитированием
  #2 (permalink)  
Старый 03.02.2010, 00:39
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от trasher
постоянно мониторит появление новых элементов -- влияет ли это как-то на скорость?
не элементов а при событии проходится по всем элементам от источника (до document если ничего не подходит) с проверкой селекторов. Обилие .live при событии mousemove|over|out - браузер загнется.
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #3 (permalink)  
Старый 03.02.2010, 11:01
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

…зато для click .live подходит шикарно. Единственное, что не радует, так это то, что Рейсиг решил полностью забить на capturing.

PeaceCoder, в Вашей библиотеке же будет capturing? (Ну, а для кривого априори IE — setCapture(), свойства onbeforeactivate, ondeactivate и прочие радости)

Последний раз редактировалось subzey, 03.02.2010 в 11:04.
Ответить с цитированием
  #4 (permalink)  
Старый 03.02.2010, 13:11
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от subzey
PeaceCoder, в Вашей библиотеке же будет capturing?
Можно реализовать, но скажите хоть 1 плюс этой фишки ?
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #5 (permalink)  
Старый 03.02.2010, 21:41
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от trasher
Что же, в середине страницы подключать файл с функциями для обработки нажатий клавиш, а ниже делать блок <script>, где инициализировать этот код? По-моему, не совсем изящно.
почему в середине? Конечно, в конце

Сообщение от trasher
Как я понимаю, желательно на странице инициализировать только то, что потенциально может использоваться на ней, но какими способами можно это сделать(выстроить такую структуру)? Разбить все на классы?
классы при чем? Они тебе могут помочь лучше организовать код, но к подключению только нужных файлов это не относиться

Сообщение от trasher
Конечная цель: чтобы обилие функций (и в дальнейшем увеличение их кол-ва) не сказывалось на скорости работы браузера
попробуй поразбивать свои скрипты на более маленькие (не от фонаря, естественно) и померяй производительность
Ответить с цитированием
  #6 (permalink)  
Старый 03.02.2010, 21:49
-
Отправить личное сообщение для twolf Посмотреть профиль Найти все сообщения от twolf
 
Регистрация: 16.07.2008
Сообщений: 207

trasher,
http://www.ozon.ru/context/detail/id/3159814/
http://www.ozon.ru/context/detail/id/2457392/
http://www.ozon.ru/context/detail/id/1308678/
Осилите - станете гуру
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2010, 01:32
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

PeaceCoder,
Фазу capturing (в нормальных браузерах) проходит любое событие, в то время, как bubbling — только те, для которых исторически так сложилось.

К тому же, обработчики на фазе capturing запускаются раньше DOM0-обработчиков и bubbling. Да и почти любое событие проходит при capturing через document в любом случае.

Кто контролирует спайс capturing, — контролирует Вселенную.
Ответить с цитированием
  #8 (permalink)  
Старый 04.02.2010, 05:38
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

С. Макконнелл, Совершенный код
вот не знаю, пытался ее читать не так давно. Невероятными усилиями воли заставил себя прочитать половину или около того. Ничего нового для себя не нашел. Плохо искал?
Ответить с цитированием
  #9 (permalink)  
Старый 04.02.2010, 10:38
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от x-yuri
Плохо искал?
Не дочитал видимо
Ответить с цитированием
  #10 (permalink)  
Старый 04.02.2010, 16:20
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от B~Vladi
Не дочитал видимо
ну а что там такого интересного написано? Лучше бы написал пару статей и не в таком нудном стиле (вот такие вот от нее у меня впечатления остались)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести исходный кусок кода. Jurasmi jQuery 2 10.12.2009 11:28
Изменение кода на лету ViZ Общие вопросы Javascript 7 07.11.2009 15:16
Манера написания кода Max01 Серверные языки и технологии 5 07.11.2009 02:09
Табы одной строкой кода EGORR jQuery 5 23.05.2009 15:21
Готовность HTML кода no_alex Общие вопросы Javascript 15 25.11.2008 16:52