Новый взгляд на старые вещи

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 24 Май, 2012, 11:49:10

Страниц: [1]
Печать
Автор Тема: как писать относительно-крупные приложения на JS?  (Прочитано 307 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Абырвалг    ↓ 
20 Сентябрь, 2010, 05:58:08
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

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

Event.observe(window, 'load', function() {
    AttributesHelperObj = new AttributesHelper();
    DescrTemplatesHandlersObj = new DescrTemplatesHandlers(AttributesHelperObj);
 
    $('product_name_mode')
        .observe('change', DescrTemplatesHandlersObj.product_name_mode_change)
        .simulate('change');
 
    $('product_subtitle_mode')
        .observe('change', DescrTemplatesHandlersObj.product_subtitle_mode_change)
        .simulate('change');
 
    $('mode')
        .observe('change', DescrTemplatesHandlersObj.mode_change)
        .simulate('change');
 
    $('attribute_set')
        .observe('change', DescrTemplatesHandlersObj.attribute_set_change)
        .simulate('change');
 
    $('use_layout')
        .observe('change', DescrTemplatesHandlersObj.use_layout_change)
        .simulate('change');
 
    $('marketplace')
        .observe('change', DescrTemplatesHandlersObj.marketplace_change)
        .simulate('change');
 
    $('image_width_mode').observe('change', DescrTemplatesHandlersObj.image_width_mode_change);
    $('image_height_mode').observe('change', DescrTemplatesHandlersObj.image_height_mode_change);
    $('image_margin_mode').observe('change', DescrTemplatesHandlersObj.image_margin_mode_change);
    $('select_attributes_image').observe('change', DescrTemplatesHandlersObj.select_attributes_image_change);
 
    editForm = new varienForm('edit_form', '<?php echo $this->getValidationUrl() ?>');
});

насколько это хуево и как вообще с этим жить дальше?)
 
да, можно сделать навешивание хендлеров более автоматизированным, что-то типа:
Javascript
var _map = {
  product_name_mode : 'change+simulate',
  image_width_mode : ['change', 'click+simulate']
}
handlersConnector.connect(DescrTemplatesHandlersObj, _map);
но имхо это не совсем Ъ-way решения проблемы
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
Абырвалг    ↓ 
20 Сентябрь, 2010, 10:33:54 , спустя 4 часа 35 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

сегодня еще 2 handler'а добавилось. Имхо все-таки я что-то неправильно делаю
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
vasa_c    ↓ 
20 Сентябрь, 2010, 10:38:57 , спустя 5 минут 3 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

Как везде - модули-хуёдули, классики-хуясики. взаимодействие через интерфейсы.
Спустя 1 минуту 22 секунды добавил
для такой хрени классик, для другой хрени классик, для всей формы классик, агрегирующий те хреновины.
Записан

Абырвалг    ↓ 
20 Сентябрь, 2010, 10:41:27 , спустя 2 минуты 30 секунд
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

классы есть (prototype JS: Class.create)
 
покажите кто-нить именно кусок хорошего кода, который обрабатывает форму
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
vasa_c    ↓ 
20 Сентябрь, 2010, 11:04:05 , спустя 22 минуты 38 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

Вот моё (не буду называть хорошим, но не совсем простое и с подобием ООП):
http://kinsburg.ru/js/quiz/TQuiz.js
http://kinsburg.ru/js/quiz/TElement.js
...
и так далее (викторина на кинсбурге, остальные файлики файрбагом можно найти)
Записан

adw0rd    ↓ 
20 Сентябрь, 2010, 11:08:52 , спустя 4 минуты 47 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17627
Сила слова: 1.67

Да-да, а в новой викторине будет еще лучше! Которая на днях выйдет, да?
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
krasun    ↓ 
20 Сентябрь, 2010, 11:14:04 , спустя 5 минут 12 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи
Группа: Джедаи

Карма: 41
Сообщений: 1379
Сила слова: 2.97

adw0rd, я забыл, а ваш кинсбург на пайтон написан?
Записан
Абырвалг    ↓ 
20 Сентябрь, 2010, 11:17:25 , спустя 3 минуты 21 секунду
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

так, а что-то я не могу найти самого процесса навешивания обработчиков на события элементов
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
adw0rd    ↓ 
20 Сентябрь, 2010, 11:24:33 , спустя 7 минут 8 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17627
Сила слова: 1.67


adw0rd, я забыл, а ваш кинсбург на пайтон написан?
нет, он начинал разрабатыватся еще до того, как я начал пайтоном увлекатся
думаю порой о переписывании, но лень мучает, уж слишком много там написано уже
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
vasa_c    ↓ 
21 Сентябрь, 2010, 12:02:09 , спустя 12 часов 37 минут 36 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

Да-да, а в новой викторине будет еще лучше! Которая на днях выйдет, да?
Да, только тебя ломает приехать и сделать )
думаю порой о переписывании
В пизду!
так, а что-то я не могу найти самого процесса навешивания обработчиков на события элементов
http://kinsburg.ru/js/quiz/TStarter.js - тут, например
Записан

Абырвалг    ↓ 
21 Сентябрь, 2010, 12:13:53 , спустя 11 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!

PHP Infected, симфоеб, маконенавистник
Группа: Джедаи

Карма: 80
Сообщений: 6096
Сила слова: 1.31

таки придется у вас зарегистрироваться)
Записан

PHP does the job since 1995
Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
adw0rd    ↓ 
21 Сентябрь, 2010, 12:43:49 , спустя 29 минут 56 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17627
Сила слова: 1.67

Да, только тебя ломает приехать и сделать )
Это тебя ломает, уже 100 ухищрений нашел чтобы не приезжать/делать
Спустя 15 секунд добавил

таки придется у вас зарегистрироваться)
:D
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Страниц: [1]
Печать
 

Перейти в: