1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/nyhxiaoning-H5-Dooring-Vue

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

[toc]

Обратите внимание на ошибки при установке с помощью npm, временно пропустите это и используйте yarn для установки пакета, который работает корректно.

Ошибки при установке с npm могут быть связаны с версией Node, но yarn работает корректно, так как проект может быть построен с использованием yarn.

Добро пожаловать в H5-Dooring 👋

Версия Документация Лицензия: MIT

H5-Dooring — это мощное, открытое и бесплатное решение для визуализации конфигурации страниц H5, которое стремится предоставить простое, удобное, профессионально надежное и бесконечное количество возможностей для оптимальной реализации H5-страниц. Технологическая стек основывается на react, а серверная часть разработана на nodejs.

🏠 Главная страница

Демо

Визуальный редактор H5

🤝 Участие

Вклады, проблемы и запросы на функции приветствуются!
Не стесняйтесь проверить страницу проблем.

Поддержите проект

Добавьте ⭐️, если этот проект помог вам!## Технологическая структура

  • Vue Один из основных фреймворков для фронтенда (React, Vue, Angular), лучше всего подходящий для разработки сложных и гибких приложений
  • Vuex Основной инструмент управления состоянием для Vue-приложений, основанный на Redux
  • Less Предварительная компиляция языка CSS, позволяющая легко писать структурированный CSS
  • vue-cli4 Фронтенд-фреймворк на основе Vue
  • ant-design-vue Всем известный набор Vue-компонентов
  • axios Сильная библиотека для запросов на фронтенде
  • mand-mobile Мобильный UI-набор на основе Vue, позволяющий легко создавать красивые H5-приложения
  • Koa Предыдущий фреймворк для разработки на основе Node.js, позволяющий легко реализовывать серверную разработку на Node.js
  • @koa/router Серверный роутинг-мидлвар на основе Koa2
  • Ramda Отличная библиотека функционального программирования на JavaScript## Анализ требований Перед анализом требований давайте посмотрим на демонстрацию использования Dooring: На основе вышеупомянутого gif-изображения можно сделать вывод, что визуальный редактор состоит из следующих основных частей:
  • Перетаскиваемая библиотека компонентов draggable components
  • Панель для размещения компонентов canvas
  • Редактор компонентов FormEditor
  • Верхняя панель инструментов toolBar

Для реализации перетаскиваемых компонентов можно использовать популярные в сообществе react-dnd и react-draggable. Поскольку наша панель является перетаскиваемой и масштабируемой, здесь требуется дополнительная функциональность для панели, подробное описание реализации можно найти ниже.Далее идет раздел H5-редактора, который является ключевым функционалом, и мы подробно рассмотрим его позже. Также есть функции предварительного просмотра, создания ссылки для предварительного просмотра, сохранения json-файлов и сохранения шаблонов. Эти функции в основном связаны с операциями над json-файлами и являются одним из распространенных методов визуального построения приложений. Давайте посмотрим на демонстрацию этих функций:

Основные подготовки

Наш H5-редактор визуального построения использует umi в качестве инструмента для создания проекта.

umi - это расширяемая корпоративная фронтенд-платформа, основанная на маршрутах, поддерживающая конфигурационные и соглашательные маршруты, гарантирующая полноту функций маршрутизации и расширяющая функциональность на их основе. Затем добавляется система плагинов с полным жизненным циклом, охватывающая каждый этап от исходного кода до конечного продукта, поддерживающая различные расширения функциональности и бизнес-потребностей.Таким образом, мы можем не беспокоиться о сложных деталях конфигурации проекта и сразу использовать antd и less в проекте, а также интегрировать популярные css modules, что позволяет удобно разрабатывать CSS в модульном виде. Конкретные шаги по созданию проекта с помощью umi следующие:

// Создание и переход в директорию проекта
mkdir dooring && cd dooring
// Создание umi-приложения
yarn create @umijs/umi-app
// Установка зависимостей
yarn    // или npm install

Три простых шага позволяют легко создать наш проект, не правда ли? (Перед использованием этих методов убедитесь, что версия Node на вашем компьютере 10.13 или выше)После создания проекта нам также потребуются дополнительные компоненты для визуализации. После исследования сообщества и выбора лучших компонентов, мы используем следующие решения:

  • react-dnd - компонент перетаскивания для React
  • react-color - компонент выбора цвета для React, используемый в редакторе H5 для выбора цвета
  • react-draggable - для перетаскивания компонентов или панели
  • react.qrcode - компонент для генерации QR-кодов на основе React, позволяющий создавать QR-коды в виде React-компонентов

Вы можете самостоятельно установить эти компоненты перед запуском проекта.

Введение

После подготовки проекта, мы можем приступить к дизайну нашего H5-редактора визуального построения - Dooring.### Реализация H5 редактора H5 визуальный редактор состоит из четырёх основных частей, которые были рассмотрены в начале статьи. Ниже приведена схема для закрепления информации: Это базовая и самая важная модель демонстрации функциональности. Далее мы разберем каждую из этих частей по отдельности и реализуем их.

Реализация принципа

Как известно, существуют несколько популярных схем визуального построения страниц:

  • Онлайн-редактирование кода
  • Онлайн-редактирование JSON
  • Безкодовое редактирование с помощью перетаскивания (основано на конфигурационных файлах JSON)Автор сделал сравнительную таблицу преимуществ и недостатков этих методов:
Схема Уровень кастомизации Недостатки
Онлайн-редактирование кода Самый высокий Высокая стоимость использования, не подходит для непрофессионалов, низкая эффективность
Онлайн-редактирование JSON Высокий Требуется знание JSON, есть стоимость использования, не подходит для непрофессионалов, средняя эффективность
Безкодовое редактирование с помощью перетаскивания Высокий Низкая стоимость использования, простота использования, высокая эффективность

На основе вышеупомянутого анализа, чтобы создать визуальный редактор, доступный для всех и не требующий специальных навыков, автор решил использовать третий метод. На рынке уже есть множество продуктов, таких как YiQixiu, Tuizhan, Baidu H5 и другие. Основной принцип реализации заключается в использовании JSON. Мы используем визуальные средства для преобразования настроек страниц в JSON-данные, а затем используем JSON-рендер для динамического создания H5-сайта.

Проектирование структуры данных

Чтобы обеспечить возможность кастомизации компонентов, нам необходимо определить структуру данных, которая будет эффективной и удобной для поддержки изменений в компонентах.Перед тем как приступить к проектированию структуры данных, давайте разберем модули: Разные компоненты соответствуют разным "редактируемым областям". Нам нужно разработать единые стандарты конфигурации для этих областей, что будет полезно для проектирования редактора форм. Детальное разбиение представлено ниже: После проведенного анализа автор разработал подобную структуру данных:

"Text": {
    "editData": [
      {
        "key": "text",
        "name": "Текст",
        "type": "Text"
      },
      {
        "key": "color",
        "name": "Цвет заголовка",
        "type": "Color"
      },
      {
        "key": "fontSize",
        "name": "Размер шрифта",
        "type": "Number"
      },
      {
        "key": "align",
        "name": "Выравнивание",
        "type": "Select",
        "range": [
          {
            "key": "left",
            "text": "По левому краю"
          },
          {
            "key": "center",
            "text": "По центру"
          },
          {
            "key": "right",
            "text": "По правому краю"
          }
        ]
      },
      {
        "key": "lineHeight",
        "name": "Высота строки",
        "type": "Number"
      }
    ],
    "config": {
      "text": "Это текст",
      "color": "rgba(60,60,60,1)",
      "fontSize": 18,
      "align": "center",
      "lineHeight": 2
    }
}

С использованием такой нормализованной структуры данных, можно легко реализовать функциональность редактирования страниц, а также легко расширять функциональность, добавляя конфигурации в editData.Что касается реализации динамического редактора форм, то существует множество подходов, и автор уже публиковал статьи на эту тему, поэтому здесь подробно останавливаться не будем. Создание универсальной платформы управления формами на основе React (и Vue)#### Проектирование библиотеки компонентов При проектировании библиотеки компонентов одним из важных аспектов является объем и скорость рендеринга. С увеличением количества компонентов загрузка страницы может стать очень медленной. Поэтому нам необходимо реализовать возможность асинхронной загрузки компонентов и разделения кода. Umi предоставляет такие возможности, и мы можем использовать его API для реализации своих собственных компонентов по требованию.

import { dynamic } from 'umi';

export default dynamic({
  loader: async function() {
    // Комментарий webpackChunkName может быть использован для указания webpack, чтобы этот компонент HugeA был вынесен отдельно под этим именем
    const { default: HugeA } = await import(/* webpackChunkName: "external_A" */ './HugeA');
    return HugeA;
  },
});

Используя вышеуказанный подход для определения каждого из наших компонентов, мы можем достичь асинхронной загрузки. Однако лучший совет заключается в том, чтобы не загружать каждый компонент по требованию и не разделять его. Для компонентов, таких как заголовок, уведомление, шапка страницы и подвал страницы, мы можем объединить их в одну группу. Это не только не повлияет на скорость загрузки, но и сократит количество HTTP-запросов.

Вот пример реализации компонента, чтобы было легче понять:```js const Header = memo((props) => { const { bgColor, logo, logoText, fontSize, color } = props return <header className={styles.header} style={{backgroundColor: bgColor}}>

<img src={logo && logo[0].url} alt={logoText} />
<div className={styles.title} style={{fontSize, color}}>{logoText} }) ```Пропсы компонента Header полностью определяются ранее спроектированными JSON-структурами. В процессе редактирования пользователем данных они собираются и передаются компоненту Header. Последний шаг — передача этих компонентов динамически в компонент **dynamic**, что было описано выше.### Реализация функции предварительного просмотра Функция предварительного просмотра довольно проста: нам нужно просто передать сгенерированные пользователем данные в формате JSON в H5-рендерер. Для этого нам потребуется создать отдельную страницу для предварительного просмотра компонентов. Давайте посмотрим на несколько примеров предварительного просмотра: h5-editor h5-editor Принцип работы рендера уже был описан ранее, поэтому подробное объяснение здесь не требуется. Если вас интересует этот вопрос, вы можете обсудить его.### Реализация функции онлайн-скачивания Для реализации функции онлайн-скачивания нам потребуется открытая библиотека: **file-saver**, которая специально предназначена для решения проблем с загрузкой файлов на фронтенде. Пример использования:
var FileSaver = require('file-saver');
var blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
FileSaver.saveAs(blob, "hello world.txt");
```Вышеуказанный код позволяет скачивать переданные данные в виде текстового файла. Если данные представлены в виде Blob, можно ли скачивать изображения или HTML-файлы онлайн? Ответ — да, поэтому для реализации задачи скачивания мы используем этот подход.

### Реализация серверной части
Серверная часть включает в себя множество различных знаний, которые не являются основной темой данной статьи. Поэтому здесь мы упомянем лишь несколько ключевых моментов. Вы можете использовать совершенно разные технологии для реализации серверной части, например **PHP**, **Java**, **Python** или **Egg**. В данной статье используется **koa**. Основные реализованные функции:

* Сохранение шаблонов
* Хранение данных источников для реального устройства
* Функции, связанные с пользователем
* Хранение H5-страниц и статических файлов

Для более подробного изучения кода можно обратиться к статье о полном стеке разработки.

[Создание CMS с нуля до единицы на основе NodeJS](https://juejin.im/post/6844903952761225230)

Структура проекта аналогична.## Реализованные функции
* 1. Функция перетаскивания и отображения компонентов
* 2. Динамическое редактирование компонентов
* 3. Функция предварительного просмотра H5-страниц
* 4. Сохранение конфигурации H5-страниц
* 5. Сохранение в виде шаблона
* 6. Кросс-платформенная адаптация для мобильных устройств
* 7. Компоненты для работы с медиа
* 8. Функция онлайн-скачивания кода сайта
* 9. Добавление поддержки TypeScript
* 10. Конструктор форм/визуализация форм## В разработке
* Добавление модуля библиотеки шаблонов
* Увеличение количества компонентов в библиотеке и добавление визуализации
* Добавление функции взаимодействия с конфигурацией
* Разделение компонентов и оптимизация кода
* Добавление юнит-тестов

## Установка
1. Клонирование кода
```sh
git clone https://github.com/MrXujiang/h5-Dooring.git
  1. Перемещение в директорию проекта
cd ./h5-Dooring
  1. Установка зависимостей
yarn install

Использование

Запуск приложения

yarn run start

Постоянное обновление

В разработке версия Yöntem 1.3, ожидайте...

Обратная связь и общение

Постоянное обновление

В разработке версия 1.3, ожидайте...

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

(H5 редактор)H5-Dooring — это мощное, открытое и бесплатное решение для визуального конфигурирования H5-страниц, которое стремится предоставить простое, удобное, профессионально надежное и неограниченное решение для лучших практик создания H5-страниц. Основной технологией является React, а серверная часть разработана на Node.js. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/nyhxiaoning-H5-Dooring-Vue.git
git@api.gitlife.ru:oschina-mirror/nyhxiaoning-H5-Dooring-Vue.git
oschina-mirror
nyhxiaoning-H5-Dooring-Vue
nyhxiaoning-H5-Dooring-Vue
master