предисловие
Компания часто продвигает и продает активности, подтягивает новые и создает временные страницы активности, и компоненты в целом схожи.Чтобы повысить эффективность работы операции и снизить стоимость разработки, разработан проект построения визуализации деятельности на основе это, так что операцию можно щелкнуть и перетащить.Компоненты, способ выбора или импорта данных, а также быстрое создание активных страниц в Интернете, вот небольшое резюме.
основной дизайн
Общий процесс таков:
Создать -> Редактировать -> Сохранить -> Опубликовать -> Показать
основной:
Поддерживайте объект, который сохраняет отношения родитель-потомок компонента, напримерnode树
, каждый компонент имеет уникальный идентификатор, например, следующий
const nodeTree = {
id: 'component0',
name: 'rootContainer',
children: [
{
id: 'component1',
name: 'header'
},
{
id: 'component2',
name: 'content',
children: [],
}
]
}
-
Создайте объект, не управляйте домом при редактировании, просто добавляйте, удаляйте, изменяйте и проверяйте массив объектов, чтобы обновить представление.
-
При сохранении объект существует в базе данных, а файл html, статический ресурс,
obj монтируется в окно посредством передачи шаблона и генерирует уникальный путь доступа
-
Изменить текущую активную страницу статус доступности при публикации
-
При отображении сгенерируйте страницу на основе указанного пользовательского компонента, отображаемого obj
фокус
1. Работа узла
Не работайте с узлом dom, обновляйте представление, добавляя, удаляя, изменяя и запрашивая объект массива.
2. Перетащите и оцените
При редактировании это включает в себя перетаскивание, оценку пересечения точки и прямоугольника, настройку смещения, чтобы отличить вставку того же уровня или вставку дочернего элемента, а также подсказку информации
-
Перетаскивание: вместо того, чтобы полностью использовать события перетаскивания (Drag and drop) HTML5, он использует их для прослушивания действий пользователя, в
dragStart
(перетащите, чтобы начать),dragOver
(перетащите в освободившуюся область),dragEnd
(перетащить конец),drop
(проставить), выполнить соответствующую передачу данных и добавить, удалить, изменить и проверить действия -
Оценка того, что точка пересекает прямоугольник: при перетаскивании компонента и наведении курсора на область размещаемого компонента пользователь может захотеть поместить его сверху, снизу, слева, справа и внутри парящего компонента (элементы уровня блока находятся вверху). и вниз, элементы уровня линии слева и справа) Нам нужно разделить соответствующие области для различных вариантов выбора и четких подсказок
Пожалуйста, посмотрите демо ниже
3. Компоненты и рендеринг
Каждый тип пользовательского компонента имеет уникальное имя, и каждый компонент также имеет уникальный идентификатор при создании в дереве узлов, что удобно для последующего редактирования и рендеринга.
Пройдите по дереву узлов, чтобы рекурсивно вызвать основной файл визуализации и визуализировать соответствующий компонент в соответствии с именем компонента и соответствующими данными.
4. Адаптация и предварительный просмотр мобильного терминала
- Из-за больших различий в стилях и стилях между мобильными и ПК набор адаптации кода не рассматривается.Каждый пользовательский компонент соответствует двум файлам ПК и h5.При рендеринге и отображении оценивается текущая платформа и производится соответствующее отображение .
- Предварительный просмотр h5 использует iframe, а предварительный просмотр h5 занимает отдельный маршрут, который назначается атрибуту src iframe.
5. Быстрое редактирование текста
На странице события будет много текста, если пользователь захочет его изменить, есть несколько способов.
-
Отредактируйте кнопку, превратите ее в поле ввода, когда закончите, сохраните кнопку,
-
Поместите поле ввода на панели свойств для сопоставления отношений,
Вышеупомянутые два могут быть менее интуитивными и более хлопотными.
подумал об использованииcontenteditable
Атрибут, после добавления тега вы можете напрямую изменить текст, вы можете установить изменение двойного щелчка, отложить сохранение и установить защиту от сотрясений, большинство компонентов будут иметь это требование, более проблематично напрямую привязать событие тега, поэтому установить глобальное событие привязки Монитор, контроль регистрации и своевременное уничтожение
Пожалуйста, посмотрите демо ниже
Функции
Редактировать откат и отменить откат
После каждой операции сохраняйте дерево узлов и помещайте его в очередь отката, чтобы выполнить откат и отменить откат, указав на предыдущую или следующую очередь, и ограничить длину очереди, чтобы контролировать использование памяти браузера.
Компонент перемещается вверх и вниз и указывает на функциональность родительского компонента
-
Когда пользователь редактирует, положение компонента может быть скорректировано, а когда слишком много уровней вложенности компонентов, может быть трудно выбрать родительский компонент текущего компонента, Исходя из этого, эти две функции предусмотрены.
-
Конкретная реализация состоит в том, чтобы пройти по дереву узлов, чтобы найти и удалить текущий компонент с помощью уникального идентификатора компонента, а затем вставить его выше или ниже родственного узла.
Думай и оптимизируй
- О диаграмме сохранения страницы активности: откройте проект отдельно или проект отдельно, как отображение активности, в соответствии с уникальным идентификатором, получите разные страницы конфигурации рендеринга данных.
вопрос:
-
Код не чистый, объем кода большой, включая все шаблоны пользовательских компонентов
-
Проблема с проектом затрагивает все страницы
-
Изменения в проектах или компонентах учитывают влияние на онлайн-активность.
Таким образом, эта идея PASS.Каждый раз, когда активная страница создается и сохраняется, на сервере будет генерироваться уникальный html-файл и статические ресурсы, чтобы гарантировать, что это не будет затронуто.
- Идея оптимизации: напрямую передать отредактированный html-фрагмент активной страницы в бэкэнд, а бэкенд напрямую сгенерирует отрендеренную активную страницу.
преимущество:
-
При доступе к странице больше не требуется временный рендеринг в соответствии с деревом узлов, а также повышается эффективность загрузки страницы.
-
Сокращение кода
Суммировать
В целом, требования к продукту соблюдены, и одновременно учитываются три аспекта.
-
Повысьте эффективность операторов при создании страниц и улучшите удобство использования продукта.
-
Сократите сложность написания пользовательских компонентов и начните работу с разработчиками, а также улучшите ремонтопригодность и масштабируемость проекта.
-
Оптимизация взаимодействия с пользователем, повышение эффективности загрузки страниц (другие аспекты, такие как удобочитаемость, видимость, удобство использования)