版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

1、概述

组件开发主要是由几4大模块构成,每个模块负责不同的分工,相互搭配构建成一个完整的可编辑组件。

组件开发主要是由几4大模块构成,1、default-setting模块、template模块、setting模块,main模块、每个模块负责不同的分工,相互搭配构建成一个完整的可编辑组件。模块

2、template模块

3、setting模块

4、main模块

2、模块介绍

1
1

1、default-setting模块

组件的默认设置,包含组件的基础设置,元素设置,内置页设置等组件基础信息。

1、元素配置

元素配置是组件构建的核心配置,所有的组件都依赖元素配置生成对应编辑器,渲染引擎的组件。

元素的配置分为元素的公用配置信息,私有元素配置

1、元素配置列表

元素名称ComponentElementModel 元素公用设置BaseCmp<T> 私有元素配置










属性

说明

类型

name

元素名称,可供编辑器显示用

string

key

可编辑元素的英文标识,可用于代码编程

string

type

可编辑元素类型包括 'btn' | 'text' | 'image' | 'choose' | 'input' | 'textarea' | 'submit' | 'fileUploader' | 'select' | 'dialog' | 'shape' | 'wxportrait' | 'wxnickname'

string

style

元素的样式

Object | undefined

isDisableControllable

是否可控制显示或隐藏

boolean | undefined

parentName

元素所属的组件名或内置页名

string | string[] | undefined

isScale

是否可以缩放大小

boolean | undefined

isDisableClick

是否有点击事件

boolean | undefined

isDisableDraggable

是否可拖拽

boolean | undefined

isDisableRotable

是否可旋转

boolean | undefined

isDisableImageReplaceable

图片是否可替换,一些占位图是不能替换的

boolean | undefined

isDisableTextReplaceable

文本是否可替换do

boolean | undefined

isDisableAnimation

是否禁用动画

boolean | undefined

isDisableTextBtn

是否禁用文字按钮,即仅图片按钮(仅对按钮元素有效)

boolean | undefined

isDisableFontSetting

是否禁用字体设置(有些动态来源的文本内容,如微信昵称,无法切割字体,需要禁用掉组件面板上的字体设置)

boolean | undefined

anchorsType

编辑状态锚点的类型:为空则表示没有锚点,不能改变大小

'nw n ne e se s sw w' 代表组件编辑框的8个锚点

string | undefined

hiddenWhenNoNickname

当获取不到微信昵称时,是否隐藏默认文字(仅对微信昵称元素有效)

boolean | undefined


default-setting 配置示例


代码块
titledefault-setting配置
linenumberstrue
//包含一个按钮 和 一个内置页的组件
const defaultSetting = {
  name: "testCmp",
  title: "测试组件",
  inlinePages:[
    {
      name: "INLINE_PAGE_A",
      title: "这是内置页",
      style: {},
      cover:
        "https://static.h5no1.com/rp/plugin/assets/a19e096f-89b8-4f15-8187-09db7a3c86f0",
    }
  ],
  elements:[
     {
      key: "BTN_A",
      name: "按钮",
      type: "btn",
      label: "确定",
      style: {
        position: "absolute",
        left: 42,
        top: 353,
        width: 235,
        height: 39,
        backgroundColor: "rgba(224,47,36,1)",
        borderRadius: 20,
        fontSize: 15,
        fontWeight: 600,
        color: "rgba(255,255,255,1)",
      },
      parentName: "testCmp",
    },
  ],
  cover:"https://static.h5no1.com/rp/plugin/assets/85becc30-ccb4-41b2-ad75-9bfa9447e587",
  style: {
    width: 293,
    height: 408,
    backgroundColor: "#fff",
  },
  hasComponentSetting: true,
};

...

1、ComponentDefaultSetting  默认设置

属性

说明

类型

name

元素名称,可供编辑器显示用

string

key

可编辑元素的英文标识,可用于代码编程

string

type

可编辑元素类型包括 'btn' | 'text' | 'image' | 'choose' | 'input' | 'textarea' | 'submit' | 'fileUploader' | 'select' | 'dialog' | 'shape' | 'wxportrait' | 'wxnickname'

string

style

元素的样式

Object | undefined

isDisableControllable

是否可控制显示或隐藏

boolean | undefined

parentName

元素所属的组件名或内置页名

string | string[] | undefined

isScale

是否可以缩放大小

boolean | undefined

isDisableClick

是否有点击事件

boolean | undefined

isDisableDraggable

是否可拖拽

boolean | undefined

isDisableRotable

是否可旋转

boolean | undefined

isDisableImageReplaceable

图片是否可替换,一些占位图是不能替换的

boolean | undefined

isDisableTextReplaceable

文本是否可替换do

boolean | undefined

isDisableAnimation

是否禁用动画

boolean | undefined

isDisableTextBtn

是否禁用文字按钮,即仅图片按钮(仅对按钮元素有效)

boolean | undefined

isDisableFontSetting

是否禁用字体设置(有些动态来源的文本内容,如微信昵称,无法切割字体,需要禁用掉组件面板上的字体设置)

boolean | undefined

anchorsType

编辑状态锚点的类型:为空则表示没有锚点,不能改变大小

'nw n ne e se s sw w' 代表组件编辑框的8个锚点

string | undefined

hiddenWhenNoNickname

当获取不到微信昵称时,是否隐藏默认文字(仅对微信昵称元素有效)

属性

说明

类型

name

组件英文名,唯一

string

title

组件中文描述

string

cover

组件封面图

string

style

组件自身的样式

Object | undefined

inlinePages

组件内置页列表

ComponentInlinePage[]

elements

组件内部可编辑元素列表,能够被编辑器识别的原子组件

ComponentElementModel[]

hasComponentSetting

组件是否有需要在编辑器右侧设置面板中加载的 setting 配置

boolean | undefined

componentBgVisible

组件是否支持隐藏背景,当为false时才隐藏背景,undefined不隐藏

boolean | undefined

isDisableClientRect

是否可以设置宽高(编辑器会禁止自适应宽高)

boolean | undefined

2、ComponentElementModel 元素公共设置

boolean | undefined


3、BaseCmp 可编辑元素设置


4、ComponentInlinePage 内置页设置

...

染模块中会有对应的render方法将组件逻辑渲染出来,最终注册到编辑器、渲染引擎使用。但组件的构建需要依赖default-setting、用户信息等数据支持,所以在构建组件之前需要创建一个上下文,提供此类数据给组件使用。

1、DependencyContext 上下文

上下文创建说明
DependencyContextReact.createContext组件配置上下文

注意:

DependencyContext只能提供给template、setting模块相关组件使用(main模块为PReact构建,所以无法正常调用)。

...