Я создаю веб-приложение (например, JavaScript с jQuery и множество SVG), где пользователь взаимодействует с «объектами» на экране (подумайте о DIV, которые можно оцифровать, изменить и связать с помощью массивов - как вектор программа рисования или графический язык программирования).Где разместить интерактивные объекты в JavaScript?
Поскольку каждый «объект» содержит индивидуальную информацию, но всегда принадлежит к «классу» элементов, очевидно, что это приложение должно быть запрограммировано с использованием подхода ООП.
Но где лучше хранить «объекты»?
- Должен ли я создать глобальную структуру («реестр») со всеми (родными) объектами JS и сказать им «нарисуйте себя на DOM»?
- Или мне следует избегать такой структуры и думать о (соответствующих) узлах DOM как о моих объектах и приложить к ним соответствующие данные как .data()?
Первый подход - это очень MVC, но я полагаю, что привязка всех обработчиков событий будет тривиальной.
Второй подход будет обрабатывать события тривиальным образом и не создает дублируемую структуру, но я думаю, что обычный материал OO (например, методы) будет более сложным.
Что вы рекомендуете? Я думаю, что ответом будет JavaScript и SVG, поскольку «обычные» языки программирования не имеют такого высокоорганизованного выходного «холста».
Я буду ждать ответов, потому что этот вопрос очень интересный IMO ... но почему вы выбрали SVG вместо того, чтобы идти на холст и более «традиционный» подход просто иметь объекты, рисующие себя на холсте? – 6502
Я выбрал SVG над Canvas, так как мои данные имеют векторный, а не пиксельный тип. И, что еще более важно, я часто использую события JavaScript (mousedown, mousemove, ...), и поскольку я могу привязать их к элементам SVG, я выгружаю «обнаружение конфликтов» в собственную реализацию браузера и дон Мне нужно сделать это самостоятельно (возможно, медленно) JavaScript – Chris