Я работаю над большим приложением с множеством редактируемых объектов на странице.Например, одна страница содержит список категорий, а каждая категория имеет список задач.Обе категории и задачи могут быть отредактированы через модальное диалоговое окно с формой внутри.
Текущее решение - встроить скрытую форму, предварительно заполненную данными, рядом с каждым объектом в html.При нажатии кнопки редактирования форма отображается внутри модального диалога и отправляется через ajax.Преимущество этого решения в том, что модальные диалоги появляются быстро.Недостатком является растущее число элементов dom и размер страницы, поскольку каждый объект требует другой скрытой формы.
Я ищу способы уменьшить вес страницы и уменьшить количество элементов dom.Я ищу баланс производительности и ремонтопригодности, так как есть много страниц с множеством различных объектов, которые нужно учитывать.
- Используйте ajax для динамической загрузки модальной заполненной формы.Это значительно уменьшает вес страницы, но вызывает задержку при нажатии кнопки редактирования и является худшим для пользователя.Также требуется, чтобы каждая форма имела обработчик ajax для этой конкретной функции.
- Сохраняйте параметры формы в виде данных json и заполняйте значения формы из клонированной формы шаблона при редактировании элемента.Это значительно уменьшает элементы dom, а также немного увеличивает вес страницы.Для вставки данных json во входные элементы необходимо написать общий фрагмент javascript.
- Сохранение всей формы HTML в виде объекта json внутри атрибута данных элемента dom.Это никак не влияет на вес страницы, но уменьшает количество элементов dom.При редактировании HTML может быть введен в модальный диалог.Его также проще всего реализовать.
- Очистите содержимое страницы для значений формы и вставьте их в клонированную шаблонную форму.Это уменьшает дублирование контента и максимально уменьшает вес страницы и dom-элементы.Несмотря на то, что это кажется хрупким и навязчивым, для контента требуется координация идентификаторов, и необходимо соблюдать особую осторожность, чтобы скрытые поля ввода также вводились на страницу.
Это параметры, которые я выбралпридумать.Решения JSON являются наиболее привлекательными для меня в настоящее время.Мне интересно, есть ли у кого-то другие решения или понимание любого из них?