• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iview-uieditor: IVEW 可视化编辑器

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

iview-uieditor

开源软件地址:

https://gitee.com/days2020/iview-uieditor

开源软件介绍:

IVEW 可视化编辑器(iview-uieditor)

imageimageimageimageimage

  • 基于 VUE 2.x
  • 在线可视化VUE开发,所见即所得
  • 支持 es2015 JS 语法
  • 开发结果不用二次编译,马上可以使用
  • 减轻开发成本,提升项目维护效率
  • 可实现低代码开发

相关资源

安装与使用

安装

yarn add iview-uieditor

iview-uieditor资源加载,使用 webpack copy

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

iview-uieditor 引入 css

import 'iview-uieditor/iview-uieditor/assets/css/app.css';

引用 iview-uieditor

import Vue from 'vue';import { IViewUieditor } from 'iview-uieditor';Vue.use(IViewUieditor);

使用编辑器组件

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

使用宣染组件

  • 宣染组件:将编辑器组件的JSON渲染到页面上
  • options 和 json 与编辑器组件一般是一致的
<iview-uieditor-render :options="options" :json="json" />

开发文档(API)

iview-uieditor 组件属性列表

名称类型默认值描述
optionsUEOptionUEOption 参数
jsonJSONjson 内容
tmplstringhtml 内容
themeUETheme主题
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...)

iview-uieditor-render 组件属性列表

名称类型默认值描述
optionsUEOptionUEOption 参数
jsonJSONjson 内容
tmplstringhtml 内容
mixinvue mixin组合 vue
queryany可以使用$this.$query获取内容
paramsany可以使用$this.$params获取内容

$this 对像

  • 为统一和加强this对像,可以在任何脚本使用 $this,并建议使用此对像

options: UEOption

  • iview-uieditor 组件参数
<iview-uieditor :options="options" /><iview-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        }      }    })});

成员变量列表

名称类型默认值描述
mixinsArray[]vue 组合,扩展到组件内部,如:组件、指令或方法等
templatesUETemplate[]设置模板到编辑器左边树
transferUETransfer{}转换器,定义json的渲染行为 和 定义组件在编辑时的行为属性
transferBeforeFunction(render: UERenderItem, extend?: UETransferExtend) => UERenderItem转换器处理之前
transferAfterFunction(render: UERenderItem, extend?: UETransferExtend) => UERenderItem转换器处理之后
extraLibFunction()=> Promise扩展代码智能提示声明
httpFunction()=> object$http或数据源method配置,参考
globalFunction()=> object定义全局变量
babelBooleantrue是否开启 babel 在线编译(要加载babel-standalone js),默认为 true

templates: UETemplate

  • 设置模板到编辑器左边树
options: UEOption = UERender.DefineOption({  ...,  templates: [      {        title: "JSON Object",        group: "测试模板库/测试模板",        json: {          type: "uieditor-div"        },      },      {        title: "Tmpl",        group: "测试模板库/测试模板",        template: `<template>	<uieditor-div>	</uieditor-div></template>`,      },    ]});

成员变量列表

名称类型默认值描述
titlestring标题
iconstring图标
groupstring分组
groupOrdernumber分组顺序,同分组的第一个groupOrder生效
jsonstring 或 objectjson 模板,可以json字串或json对像
templatestringhtml 模板,如果有json内容,优先使用json内容
movingFunction(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) || {});          );        },      },    ];  }};

成员变量列表

名称类型默认值描述
modesArray['json', 'script', 'tmpl]编辑器可用模式:json, script, tmpl
toolBarUEToolBar[][]设置顶部工具栏
leftBarUESideBar左边工具栏(组件与模板)
rightBarUESideBar右边工具栏(属性)
aboutFunction({ service: UEService }): string设置关于对话框内容
contextmenusFunction({ 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));      },    }  ]};

成员变量列表

名称类型默认值描述
titlestring标题,如有图标,用于tip
iconstring图标
dividedbooleanfalse分离线
disabledbooleanfalse禁用
showbooleanfalse是否显示
click方法(e: any): void点击

leftBar / rightBar: UESideBar

  • 则边工具栏
theme: UETheme = {  ...,  leftBar: {    show:true,    filter({item}){ return item.name.indexOf('text') >= 0; }  }};

成员变量列表

名称类型默认值描述
showbooleanfalse是否显示
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        }      }    })});

成员变量列表

名称类型默认值描述
typestring组件名称
editorUETransferEditor组件编辑时属性与行为特性
transferFunction(render: UERenderItem, extend?: UETransferExtend): UERenderItem渲染时转换 render, 如果返回空不渲染

editor: UETransferEditor

  • 组件编辑时属性与行为特性
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        }      }    })});

成员变量列表

名称类型默认值描述
textstring((p: { editor: UETransferEditor, attrs: UETransferEditorAttrs }) => string)
defaultTextstring如果text为空时默认内容
iconstring图标
jsonstring默认JSON模板内容
templatestring默认HTML模板内容
ordernumber99排序
groupstring分组,可用"/"实现分组层级,如:基础库/基础组件
groupOrdernumber99分组排序
basebooleantrue是否基础组件,编辑时作为独立组件,子孙节点不能选中等操作
containerbooleanfalse是否容器,如:div
containerBorderbooleanfalse是否显示容器边框,方便编辑时定位
controlLeftbooleantrue是否在容器左边留空方便选择,容器时默认为 true
emptystring编辑时使用黑块代替组件显示,处理大型组件占用性能
collapsebooleantrue是否可以收起,容器时默认为 true
selectbooleantrue是否可以选中(编辑)
selectChildbooleantrue是否可以选中子节点(编辑)
removebooleantrue是否可以删除(编辑)
removeChildbooleantrue是否可以删除子节点(编辑)
draggablebooleantrue是否可以拖动(编辑)
draggableChildbooleantrue是否可以拖动子节点(编辑)
showInTreebooleantrue是否显示在组件树
showbooleantrue是否显示
inlinebooleantrue编辑时是否强制显示为inline
classNamestring编辑时临时添加样式
placeholderAttrbooleanfalse组件是否有placeholder属性
disabledAttrbooleanfalse组件是否有 disabled 属性
hideAttrsstring[][]隐藏已有属性attr,如: ['class']
hideAttrGroupsstring[][]隐藏已有属性分组
attrsUETransferEditorAttrs设置组件属性栏
copingFunction(p: { render: UERenderItem; parent: UERenderItem; service: UEService; }) => boolean处理是否可以复制,并可以处理复制内容
contentingFunction(p: any) => boolean是否可以拖动组件为子节点,容器时才会生产
movingFunction(p: any) => boolean拖动时处理,返回true
movingChildFunction(p: any) => boolean拖动时处理,返回true
movingOutFunction(p: any) => boolean拖动时处理,返回true
movingInFunction(p: any) => boolean拖动时处理,返回true
initAttrFunction(p: any) => void编辑时初始化render.attrs
transferAttrFunction(p: any) => void编辑渲染时转换 render 和 attr,转换内容会生成到JSON
transferAttrAfterFunction(p: any) => void编辑渲染时转换 render.attrs 到 render 之后
contextmenuFunction(p: any) => void选中对像的快捷菜单
toolbarFunction(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' }          }        }      }    })});

成员变量列表

名称类型默认值描述
textstring显示名称
valueany默认值
demoValueany编辑时代替value,保证组件编辑时的显示效果和防止使用value时出错
editValueany进入高级代码编写时,使用些属性代替 value 属性
descstring描述说明
codeBtnbooleantrue是否默认代码编辑按钮
languagestringjavascript代码编辑语言,如:javascript,html
rowbooleanfalse是否占一行
groupstring分组
groupOrdernumber99分组顺序,同组第一个为准
ordernumber99顺序
showbooleantrue是否显示属性
eventbooleanfalse是否事件
vuebooleanfalse是否vue属性
effectbooleanfalse是否在编辑时生效
editorOlnybooleanfalse此属性只使用于编辑器,即最终结果没有此属性
typetext, slider, slider-only, select, select-only, boolean, boolean-only, number, custom'text显示类型
typeOptionany显示类型的参数,如:type为'slider'时,typeOption={min:1,max:24}
datasstring[]显示类型数据源,如:type为'select'时,datas=['small', 'large']
bindbooleanfalse是否为bind属性
enabledBindbooleanfalse是否允许修改bind属性
editorBindbooleanfalse编辑是否使用bind,编辑开此项容易报错
changeFunction(attr: UETransferEditorAttrsItem, service: UEService) => boolean改变时处理,返回false中断

service: 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())          }      }    })});

成员变量列表

名称类型默认值描述
$uieditorVue获取当前编辑组件
optionsUEOption获取当前options
historyobject获取历史记录信息
currentobject获取当前信息,如果选中id等
rootRenderobject获取当前JSON root

成员函数列表

setModeUI

  • 设置当前模式
setModeUI(mode: UEMode): void;
参数
名称类型是否必选默认值描述
modedesign, json, script, tmpl, previewdesign模式

showMonacoEditorOther

  • 显示代码编辑器
showMonacoEditorOther(option: MonacoEditorContext): Promise<void>
参数
名称类型是否必选默认值描述
optionMonacoEditorContext选项

getTmpl

  • 获取模板(html)
getTmpl(): string

setTmpl

  • 设置模板(html)
setTmpl(html:string): Promise<void>
参数
名称类型是否必选默认值描述
htmlstringhtml模板内容

getJson

  • 获取json
getJson(): string

setJson

  • 设置json
getJson(json:string | object): Promise<void>
参数
名称类型是否必选默认值描述
jsonstring, objectjson内容

getScript

  • 获取代码(script)
getScript(): string

setScript

  • 设置代码
setScript(script:string): Promise<void>
参数
名称类型是否必选默认值描述
scriptstring代码内容

getCurRender

  • 获取当前选中节点
getCurRender(): UERenderItem

getRenderItem

  • 获取指定ID的节点
getRenderItem(id: string, context?: UERenderItem): UERenderItem
参数
名称类型是否必选默认值描述
idstringID
contextUERenderItemrootRender搜索上下文节点

getRenderByType

  • 获取指定ID的节点
getRenderByType(type: string, context?: UERenderItem): UERenderItem
参数
名称类型是否必选默认值描述
typestring类型
contextUERenderItemrootRender搜索上下文节点

getParentRenderItem

  • 获取父节点
getParentRenderItem(render: UERenderItem, all?: boolean): UERenderItem
参数
<
名称类型是否必选默认值描述
renderUERenderItem节点
allUERenderItem

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap