ФорумПрограммированиеJavaScript → как писать относительно-крупные приложения на JS?

как писать относительно-крупные приложения на JS?

  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 6:58

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

    короче практики жабаскриптерской у меня маловато, возникают такие конструкции:

    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() ?>');
    });


    насколько это хуево и как вообще с этим жить дальше?)

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

    но имхо это не совсем Ъ-way решения проблемы
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 11:33, спустя 4 часа 35 минут 46 секунд

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

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 11:38, спустя 5 минут 3 секунды

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

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 11:41, спустя 2 минуты 30 секунд

    классы есть (prototype JS: Class.create)

    покажите кто-нить именно кусок хорошего кода, который обрабатывает форму
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 12:04, спустя 22 минуты 38 секунд

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

    и так далее (викторина на кинсбурге, остальные файлики файрбагом можно найти)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 12:08, спустя 4 минуты 47 секунд

    Да-да, а в новой викторине будет еще лучше! Которая на днях выйдет, да?
    adw/0
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 12:14, спустя 5 минут 12 секунд

    adw0rd, я забыл, а ваш кинсбург на пайтон написан?
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 20 сентября 2010 г. 12:17, спустя 3 минуты 21 секунду

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

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 20 сентября 2010 г. 12:24, спустя 7 минут 8 секунд


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

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 21 сентября 2010 г. 1:02, спустя 12 часов 37 минут 36 секунд

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

    Да, только тебя ломает приехать и сделать )
    думаю порой о переписывании

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

    http://kinsburg.ru/js/quiz/TStarter.js - тут, например
  • Абырвалг

    Сообщения: 6476 Репутация: N Группа: Джедаи

    Spritz 21 сентября 2010 г. 1:13, спустя 11 минут 44 секунды

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

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 21 сентября 2010 г. 1:43, спустя 29 минут 56 секунд

    Да, только тебя ломает приехать и сделать )

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

    таки придется у вас зарегистрироваться)
    :D
    adw/0

Пожалуйста, авторизуйтесь, чтобы написать комментарий!