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

OSCHINA-MIRROR/days2020-vue-uieditor

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

VUE 可视化编辑器 (vue-uieditor)

Vue-uieditor — это онлайн-редактор для разработки на Vue, который позволяет видеть результат сразу после внесения изменений. Он поддерживает синтаксис ES2015 JavaScript и не требует дополнительной компиляции, что позволяет использовать его результаты сразу же.

Возможности:

  • Снижение стоимости разработки. Редактор помогает ускорить процесс разработки и снизить затраты на проект.
  • Поддержка синтаксиса ES2015. Позволяет использовать современный синтаксис JavaScript.
  • Отсутствие необходимости в дополнительной компиляции. Результаты работы редактора можно использовать сразу после редактирования.
  • Возможность реализации низкокодовой разработки.

Ресурсы:

Установка и использование:

Установка:

yarn add vue-uieditor

Загрузка ресурсов vue-uieditor с помощью webpack copy:

config.plugin('copy-vue-uieditor-assets').use(CopyWebpackPlugin, [
  [{
    from: './node_modules/vue-uieditor/vue-uieditor',
    to: './vue-uieditor/'
  }]
]);

Импорт vue-uieditor:

import Vue from 'vue';
import VueUieditor from 'vue-uieditor';

Vue.use(VueUieditor);

Использование компонента редактора:

<vue-uieditor :options="options" :json="json" :theme="theme" />

Использование визуализированного компонента:

  • Визуализированный компонент отображает содержимое компонента редактора на странице.
  • Свойства options и json должны соответствовать свойствам компонента редактора.
<vue-uieditor-render :options="options" :json="json" />

Документация по API:

Список свойств компонента vue-uieditor:

Название Тип Значение по умолчанию Описание
options UEOption Пустое Параметры UEOption
json JSON Пустое Содержимое JSON
tmpl string Пустое HTML-содержимое
theme UETheme Пустое Тема
on-ready Событие ({service:UEService)=>void Подготовка к редактированию завершена
on-change Событие ({service:UEService)=>void Изменение содержимого
on-select Событие (p)=>void; Выбор
on-add-component Событие (p)=>void; Добавление содержимого, например, перетаскивание компонента или шаблона
on-change-mode Событие (p)=>void; Текущий режим изменился (design, json и т. д.)

Список свойств компонента vue-uieditor-render:

Название Тип Значение по умолчанию Описание
options UEOption Пустое Параметр UEOption
json JSON Пустое Содержание JSON
tmpl string Пустое HTML-контент
mixin vue mixin Пустое Комбинация vue
query any Пустое Можно использовать $this.$query для получения содержимого
params any Пустое Можно использовать $this.$params для получения содержимого

$this — это унифицированный и усиленный объект this, который можно использовать в любом скрипте и рекомендуется использовать этот объект.

Параметры options: UEOption:

Параметры компонента vue-uieditor.

<vue-uieditor :options="options" />
<vue-uieditor-render :options="options" />
options: UEOption = UERender.DefineOption({
  mixins:[{
    data(){
      return {
        text:'hello'
      };
    },
    created(){

    }
  }],
  templates: [
      {
        title: "JSON Object",
        group: "Тестовый шаблонный набор/Тестовый шаблон",
        json: {
          type: "uieditor-div"
        },
      },
      {
        title: "Tmpl",
        group: "Тестовый шаблонный набор/Тестовый шаблон",
        template: `<template>
    <uieditor-div>
    </uieditor-div>
</template>`,
      },
    ],
    async extraLib(){
      return `const text:string;`
    },
    global(){
      return {
        _:lodash
      };
    },
    transfer:UERender.DefineTransfer({
      'uieditor-div': {
        "editor": {
          text: 'Div 块级标签',
          order: 0,
          groupOrder:0,
          group:'Общий набор компонентов/Базовый компонент',
          icon: 'layui-icon layui-icon-template-1',
          container: true
        }
      }
    })
});

Список переменных членов:

Название Тип Значение по умолчанию Описание
mixins Array [] Компоненты Vue, расширяемые внутри компонента, такие как компоненты, директивы или методы и т.д.
templates UETemplate [] Установите шаблон в дерево слева от редактора
transfer UETransfer {} Конвертер, определяющий поведение рендеринга json и определяющий атрибуты поведения компонента во время редактирования
transferBefore Function (render: UERenderItem, extend?: UETransferExtend) => UERenderItem Обработка конвертера перед
transferAfter Function (render: UERenderItem, extend?: UETransferExtend) => UERenderItem Обработка конвертером после
extraLib Function ()=> Promise Расширенное объявление кода интеллектуальной подсказки
http Function ()=> object $http или конфигурация метода источника данных, см. ссылку
global Function ()=> object Определение глобальных переменных
babel Boolean true Включить ли Babel
templates: UETemplate

- 设置模板到编辑器左边树

```ts
options: UEOption = UERender.DefineOption({
  ...,
  templates: [
      {
        title: "JSON Object",
        group: "测试模板库/测试模板",
        json: {
          type: "uieditor-div"
        },
      },
      {
        title: "Tmpl",
        group: "测试模板库/测试模板",
        template: `<template>
    <uieditor-div>
    </uieditor-div>
</template>`,
      }
    ]
});

成员变量列表

名称 类型 默认值 描述
title string 标题
icon string 图标
group string 分组
groupOrder number 分组顺序,同分组的第一个groupOrder生效
json string 或 object json 模板,可以json字串或json对像
template string html 模板,如果有json内容,优先使用json内容
moving Function (p: any) => boolean 拖动时处理,返回true

theme: UETheme

— 组件主题

<vue-uieditor :theme="theme" />
theme: UETheme = {
  modes: ["json", "script", "tmpl"],
  toolBar: [
    {
      title: "测试",
      click: ({ service }) => {
        this.json = service.getJson();
        console.log('json', JSON.stringify(json));
      }
    }
  ],
  contextmenus({ render, service }) {
    return [
      {
        title: "测 试",
        disabled: !render,
        click: (item) => {
          console.log(
            JSON.stringify(service.getJson(false, render) || {})
          );
        }
      }
    ];
  }
};

成员变量列表

Наименование Тип Значение по умолчанию Описание
modes Array ['json', 'script', 'tmpl] Режимы редактора: json, script, tmpl
toolBar UEToolBar[] [] Настройка панели инструментов
leftBar UESideBar Панель инструментов слева (компоненты и шаблоны)
rightBar UESideBar Панель инструментов справа (свойства)
about Function ({ service: UEService }): string Настройка содержимого диалогового окна «О программе»
contextmenus Function ({ render: UERenderItem; parent: UERenderItem; editor: UETransferEditor; service: UEService; }): UEContextmenuItem[] Контекстное меню выбранного компонента

toolBar: UEToolBar

— Панель инструментов

theme: UETheme = {
  ...,
  toolBar: [
    {
      title: "测试",
      click: ({ service }) => {
        this.json = service.getJson();
        console.log('json', JSON.stringify(json));
      }
    }
  ]
};

成员变量列表

Наименование Тип Значение по умолчанию Описание
title string Заголовок, используется для всплывающей подсказки при наличии значка
icon string Значок
divided boolean false Разделительная линия
disabled boolean false Отключено
show boolean false Отображать или нет
click Метод (e: any): void Действие при нажатии

leftBar / rightBar: UESideBar

— Панели инструментов слева и справа

theme: UETheme = {
  ...,
  leftBar: {
    show:true,
    filter({item}){ return item.name.indexOf('text') >= 0; }
  }
};

成员变量列表

Наименование Тип Значение по умолчанию Описание
show boolean false Отображать или нет
filter Метод ({item,all,service}): boolean Фильтр

特殊组件属性

— Ограничение операций редактирования компонентов

/** 标记为不能选择 */
const UECanNotSelectProps = 'ue-cant-select';
/** 标рик за нельзыя перемещать */
const UECanNotMoveProps = 'ue-cant-move';
/** 标рик за нельзя удалять */
const UECanNotRemoveProps = 'ue-cant-remove';
/** 标рик за нельзя копировать */
const UECanNotCopyProps = 'ue-cant-copy';
/** 标рик за нельзя выбирать дочерние элементы */
const UECanNotSelectChildProps = 'ue-cant-select-child';
/** 标рик за нельзя перемещать дочерние элементы */
const UECanNotMoveChildProps = 'ue-cant-move-child';
/** 标рик за нельзя удалять дочерние элементы */
const UECanNotRemoveChildProps = 'ue-cant-remove-child';
/** 标рик за нельзя копировать дочерние элементы */
const UECanNotCopyChildProps = 'ue-cant-copy-child';
/** 标рик за нельзя вставлять дочерние элементы внутрь */
const UECanNotMoveInProps = 'ue-cant-movein';
/** 标рик за нельзя извлекать дочерние элементы наружу */
const UECanNotMoveOutProps = 'ue-cant-moveout';
/** 标рик за узел заблокирован */
const UEIsLockProps = 'ue-is-lock';
/** 标рик за узел свёрнут */
const UEIsCollapseProps = 'ue-is-collapse';

transfer: UETransfer

— Конвертер, определяет поведение рендеринга json и поведение компонентов во время редактирования

options: UEOption = UERender.DefineOption({
    ...,
    transfer:UERender.DefineTransfer({
      'uieditor-div': {
        "editor": {
          text: 'Div 块级标签',
          order: 0,
          groupOrder:0,
          group:'公用组件库/基础组件',
          icon: 'layui-icon layui-icon-template-1',
          container: true
        }
      }
    })
});
``` **Наименование** | **Тип** | **Значение по умолчанию** | **Описание**
| --- | --- | --- |
| type | string | 空 | Компонентное наименование
| editor | UETransferEditor | 空 | Свойства и характеристики поведения компонента при редактировании
| transfer | Function | (render: UERenderItem, extend?: UETransferExtend): UERenderItem | Преобразует render при рендеринге, если возвращает пустое значение — не рендерит

## editor: UETransferEditor

- Свойства и характеристики поведения компонента при редактировании.

```ts
options: UEOption = UERender.DefineOption({
    ...,
    transfer:UERender.DefineTransfer({
      'uieditor-div': {
        "editor": {
          text: 'Div 块级标签',
          order: 0,
          groupOrder:0,
          group:'公用组件库/基础组件',
          icon: 'layui-icon layui-icon-template-1',
          container: true
        }
      }
    })
});

Список переменных-членов

Наименование Тип Значение по умолчанию Описание
text string ((p: { editor: UETransferEditor, attrs: UETransferEditorAttrs }) => string) Пустое
defaultText string Пустое Если text пуст, то это значение по умолчанию
icon string Пустое Значок
json string Пустое Содержимое шаблона по умолчанию в формате JSON
template string Пустое Содержание шаблона по умолчанию в HTML
order number 99 Сортировка
group string Пустое Группа, можно использовать «/» для реализации иерархии групп, например: базовая библиотека / базовый компонент
groupOrder number 99 Групповая сортировка
base boolean true Является ли базовым компонентом, при редактировании выступает как независимый компонент, дочерние и внучатые узлы не могут быть выбраны и т. д.
container boolean false Является ли контейнером, например div
containerBorder boolean false Показывает ли границы контейнера, удобно для позиционирования при редактировании
controlLeft boolean true Находится ли контейнер слева, чтобы было удобно выбирать, по умолчанию верно для контейнеров
empty string Пустое Используется чёрный блок вместо отображения компонента при редактировании, что помогает избежать проблем с производительностью при работе с большими компонентами
collapse boolean true Можно ли свернуть, по умолчанию верно для контейнеров
select boolean true Можно ли выбрать (редактировать)
selectChild boolean true Можно ли выбрать дочерний узел (редактировать)
remove boolean true Можно ли удалить (редактировать)
removeChild boolean true Можно ли удалить дочерний узел (редактировать)
draggable boolean true Можно ли перетащить (редактировать)
draggableChild boolean true Можно ли перетащить дочерний узел (редактировать)
showInTree boolean true Будет ли отображаться в дереве компонентов
show boolean true Будет ли отображаться
inline boolean true Обязательно ли отображать как inline при редактировании
className string Пустое Временный стиль при редактировании
placeholderAttr boolean false Есть ли у компонента атрибут placeholder
disabledAttr boolean false Есть ли у компонента атрибут disabled
hideAttrs string[] [] Скрытые существующие атрибуты attr, такие как ['class']
hideAttrGroups string[] [] Скрытые группы существующих атрибутов
attrs UETransferEditorAttrs Пустое Устанавливает панель свойств компонента
coping Function (p: { render: UERenderItem; parent: UERenderItem; service: UEService; }) => boolean Обработка возможности копирования, также может обрабатывать содержимое копирования
contenting Function (p: any) => boolean Возможность перетаскивания компонента в качестве дочернего узла, генерируется только при редактировании контейнеров
moving Function (p: any) => boolean Обработчик перемещения, возвращает true или false, определяет, можно ли переместить в цель
movingChild Function (p: any) => boolean Обработчик перемещения дочерних узлов, возвращает true или false, определяет, можно ли перемещать дочерние узлы
movingOut Function (p: any) => boolean Обработчик удаления дочерних узлов из текущего узла, возвращает true или false, определяет возможность удаления
movingIn Function (p: any) => boolean Обработчик добавления дочерних узлов к текущему узлу, возвращает true или false, определяет возможность добавления
initAttr Function (p: any) => void Инициализация render.attrs при редактировании
transferAttr Function (p: any) => void Преобразование render и attr при редактировании и рендеринге, преобразованное содержимое будет помещено в JSON
transferAttrAfter Function (p: any) => void Преобразование render.attrs в render после редактирования
contextmenu Function (p: any) => void Контекстное меню выбранного объекта
toolbar Function (p: any) => void Панель инструментов выбранного объекта

attrs: UETransferEditorAttrs

  • Свойства и характеристики поведения компонентов при редактировании.
options: UEOption = UERender.DefineOption({
    ...,
    transfer:UERender.DefineTransfer({
      'uieditor-img': {
        "editor": {
          text: "Image 图片",
          order: 2,
          groupOrder:0,
          group:'公用组件库/基础组件',
          icon: 'layui-icon layui-icon-picture',
          inline: true,
          attrs: {
            src: {
              order: 0,
              value: './vue-uieditor/assets/images/demo.png',
              effect: true,
            },
            style: { value: 'min-width:30px;min-height:30px' }
          }
        }
      }
    })
});

Список переменных-членов

Наименование Тип Значение по умолчанию Описание
text string Пустое Отображаемое имя
value any Пустое Значение по умолчанию
demoValue any Пустое Заменяет значение при редактировании для обеспечения эффекта отображения и предотвращения ошибок при использовании значения
editValue any Пустое При переходе в режим расширенного редактирования кода используется для замены значения свойства
desc string Пустое Описание
codeBtn boolean true Кнопка редактирования кода по умолчанию
language string javascript Язык программирования для редактирования кода, например javascript, html
Свойство Тип Значение Описание
boolean boolean false Занимает ли строка одну строку
group string Пустая строка Группа
groupOrder number 99 Порядок группы, первый в группе — 0
order number 99 Последовательность
show boolean true Отображать ли атрибут
event boolean false Является ли событием
vue boolean false Атрибут Vue
effect boolean false Влияет ли на редактирование
editorOlny boolean false Используется только в редакторе, в окончательном результате отсутствует
type text, slider, slider-only, select, select-only, boolean, boolean-only, number, custom text Тип отображения
typeOption any Пустая Параметры типа отображения, например: type = 'slider', typeOption = {min:1,max:24}
datas string[] Пустая Источник данных типа отображения, например: type = 'select', datas = ['small', 'large']
bind boolean false Связан ли с bind
enabledBind boolean false Разрешено ли изменять bind
editorBind boolean false Редактор использует bind, при использовании этой опции легко допустить ошибку
change Function (attr: UETransferEditorAttrsItem, service: UEService) => boolean Обработка изменений, возврат false прерывает

Сервис: UEService

— Свойства и поведение компонентов во время редактирования.

options: UEOption = UERender.DefineOption({
    ...,
    transfer:UERender.DefineTransfer({
      'uieditor-div': {
        "editor": {
          text: "Div",
          order: 2,
          groupOrder:0,
          group:'Общедоступная библиотека компонентов/Основные компоненты',
          icon: 'layui-icon layui-icon-picture',
          inline: true,
          transferAttr({ service }) {
            console.log('service', service.getJson())
          }
      }
    })
});

Список переменных-членов

Имя Тип Значение по умолчанию Описание
$uieditor Vue Пустое Получить текущий редактируемый компонент
options UEOption Пустое Получение текущих параметров
history object Пустое Получение информации о журнале
current object Пустое Получает текущую информацию, если выбран id и т. д.
rootRender object Пустое Получите текущий JSON root

Список функций-членов

setModeUI

  • Установить текущий режим.
setModeUI(mode: UEMode): void;
Параметры
Имя Тип Требуется Значение по умолчанию Описание
mode design, json, script, tmpl, preview Да design Режим

showMonacoEditorOther

  • Показать редактор кода.
showMonacoEditorOther(option: MonacoEditorContext): Promise<void>
Параметры
Имя Тип Требуется Значение по умолчанию Описание
option MonacoEditorContext Да Пустое Опции

getTmpl

  • Получить шаблон (HTML).
getTmpl(): string

setTmpl

  • Установите шаблон (HTML).
setTmpl(html:string): Promise<void>
Параметры
Имя Тип Требуется Значение по умолчанию Описание
html string Да Пустое Содержимое шаблона HTML

getJson

  • Получите JSON.
getJson(): string

setJson

  • Установка JSON.
getJson(json:string | object): Promise<void>
Параметры
Имя Тип Требуется Значение по умолчанию Описание
json string, object Да Пустое Содержание JSON

getScript

  • Получение кода (скрипт).
getScript(): string

setScript

  • Настройка кода.
setScript(script:string): Promise<void>
Параметры
Имя Тип Требуется Значение по умолчанию Описание
script string Да Пустое Код содержимого

getCurRender

  • Получить выбранный узел.
getCurRender(): UERenderItem

getRenderItem

  • Получить узел по указанному ID.
getRenderItem(id: string, context?: UERenderItem): UERenderItem
Параметры
Имя Тип Требуется Значение по умолчанию Описание
id string Да Пустое ID
context UERenderItem Нет rootRender Поиск узла контекста

getRenderByType

  • Получить узел указанного типа.
getRenderByType(type: string, context?: UERenderItem): UERenderItem
Параметры
Имя Тип Требуется Значение по умолчанию Описание
type string Да Пустое Тип
context UERenderItem Нет rootRender Искать узел контекста

getParentRenderItem

  • Получить родительский узел.
getParentRenderItem(render: UERenderItem, all?: boolean): UERenderItem
Параметры
Имя Тип Требуется Значение по умолчанию Описание
render UERenderItem Да Пустое Узел
all UERenderItem Нет Да Все содержимое, иначе поиск родительского узла в соответствии с выбором

getParentRenderByType

  • Найти родительский узел по типу.
getParentRenderByType(render: UERenderItem, type: string): UERenderItem
Параметры
Имя Тип Требуется Значение по умолчанию Описание
render UERenderItem Да Пустое Узел
  • Определение параметров.
static DefineOption(options: UEOption): UEOption;
Наименование Тип Обязательность Значение по умолчанию Описание
options UEOption Да Параметр

DefineTransfer

  • Определение переноса.
static DefineTransfer(transfer: UETransfer): UETransfer;
Наименование Тип Обязательность Значение по умолчанию Описание
transfer UETransfer Да Перенос

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

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

Введение

Визуальный редактор VUE. Развернуть Свернуть
JavaScript и 6 других языков
MIT
Отмена

Обновления (2)

все

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/days2020-vue-uieditor.git
git@api.gitlife.ru:oschina-mirror/days2020-vue-uieditor.git
oschina-mirror
days2020-vue-uieditor
days2020-vue-uieditor
develop