配置中心 配置中心组件(Configuration) - jingjiajie/FrontWork GitHub Wiki
配置中心组件是FrontWork最为重要的组件之一。作为一款极力提倡“配置优于实现”的前端框架,配置中心是FrontWork所有组件中必不可少的一个。下面让我们来认识配置中心组件:Configuration
上图就是配置中心组件。我们只需要从Visual Studio的工具框里把这个组件拖放到窗口的任意一个地方,就可以了。Configuration作为非可视组件,仅仅在设计器中显示,在软件启动后会自动隐藏。让我们看一下配置中心组件有哪些属性:
如上图所示,Configuration对象有两个重要的属性:ConfigurationString,MethodListener。下面让我们来介绍这这些属性的作用。
ConfigurationString是配置字符串,采用Json格式的FrontWork配置字符串。用来配置所有的字段,约束,默认值,占位符,联想内容,可视等等。也包括API的相关信息。让我们点击这个属性,看一看FrontWork提供的精致的配置字符串编辑器:
输入以上配置后,我们可以在基本视图中看到如下的效果(关于基本视图的介绍,详见后面的介绍)
在属性编辑器中,我们输入了一段简单的配置。如果你仔细观察,很容易发现其中的规律。FrontWork一向主张开发者优先的产品理念,并计划开发图形界面化的配置编辑器。不过目前,我们需要手动编写配置文件。下面让我们来介绍配置字符串中包含的配置模式,字段配置等内容。
配置字符串以Json数组作为开始。数组的每一项为一个配置模式。什么叫做配置模式?简单的说,我们的窗口在与用户交互的过程中,很可能会有多种模式,例如用户在确认订单前,所有的编辑框都是可修改状态,而用户在确认订单后,准备付款前,仅有支付方式相关的选择框可以编辑,其他的编辑框等组件全部不可编辑。而付款成功之后,窗口又会呈现出不同的样子。而我们可以在一个配置中心里编写三个配置模式,来满足这样的需求。下图中画圈的部分就是关于配置模式的声明:
每一个配置模式需要包含一个字段"mode"。mode字段的值即为该配置模式的模式名称。显然,mode字段是一个字符串类型。如果省略mode字段,该配置模式的名称默认为"default",由于配置模式的名称是唯一的,如果有两个配置模式都省略了mode,则会引起配置模式名称的冲突,FrontWork会抛出错误。
在一般的FrontWork组件中,都会有Mode属性来决定该组件所执行的配置模式。在需要切换模式的时候,我们往往只需要更改组件的Mode就可以实现模式的切换。
接下来让我们回到配置字符串的fields字段: fields字段也是一个数组,其中的每一项就是字段的配置信息了。在当前的版本中,FrontWork为每个字段提供了如下的配置:
name: String = null (必填项)
字段名displayName: String = name
字段的显示名称,留空默认等于字段名type: String = "object"
字段的类型,可以为如下几种:
"string","int","double","datetime"placeHolder: String = null
字段的占位符defaultValue: Object = null
字段的默认值
可接受方法监听器函数返回值visible: Boolean = true
字段是否可视editable: Boolean = true
字段是否可编辑values: string[] = null
字段的可选值(如果填写此项,字段以下拉框形式呈现)
可接受方法监听器函数返回值forwardMapper: (Object)->String = null
字段的前向映射函数
前向映射:字段的值从模型(Model)同步到视图(View)之前,经过此函数处理
参数:字段在Model中的值
返回值:字段处理后的结果backwordMapper: (String)->Object = null
字段的后向映射函数
后向映射:字段的值从视图(View)同步到模型(Model)之前,经过此函数处理 参数:字段在视图上显示的文字内容
返回值:字段处理后的结果association: (String)->AssociationItem[] = null
字段的输入联想函数。如果填写此项,则用户在输入的时候,系统会弹出输入联想窗口,为用户提供候选项。
参数:用户已经输入的文字
返回值:AssociationItem数组,用来传递所有的候选项信息contentChanged: (String)->void = null
字段内容改变事件函数(用户每次键入字符时触发)
参数:用户已经输入的文字
返回值:无editEnded: (String)->void = null
字段编辑完毕事件函数(用户焦点离开编辑框时触发)
参数:用户输入的文字
返回值:无注意: 所有函数类型的属性,都填写方法监听器中方法的名称(不区分大小写),并以"#"开头。例如,方法监听器中编写了姓名改变事件 NameChanged(),则editEnded属性填写"#nameChanged"。关于方法监听器的介绍,请见下面
在这里,我们介绍一下MethodListener(方法监听器)。顾名思义,方法监听器就是将我们的前端所需要执行的函数集中在这里,当需要调用函数的时候,系统会在MethodListener里查找所需要的函数,进行调用。上面演示的配置中,我们为"角色"字段的values属性绑定了一个叫做"#roleValues"的方法。下面让我们尝试创建一个方法监听器来实现这个方法。首先新建一个类,类名随意,在这里我们取名为MainFormMethodListener,并标注[MethodListener]注解:
方法监听器类(C#):
/*类名可自由取,类需要标注[MethodListener]注解*/ [MethodListener] public class MainFormMethodListener { public string[] RoleValues() /*函数名称可自由取*/ { return new string[]{"管理员","普通用户"}; } }接下来,我们需要将我们刚刚创建的方法监听器类MainFormMethodListener添加到我们的配置中心里:
首先点击配置中心组件的MethodListeners属性:
在弹出的编辑器中,点击“添加”:
填写我们的方法监听器类名(MainFormMethodListener)和需要应用到的配置模式(default):
最后,在我们需要调用这个方法的字段上,添加该方法:
{values: "#roleValues"}其中"roleValues"就是我们的方法监听器MainFormMethodListener类中的RoleValues函数名。这里要注意,方法监听器中的方法名不区分大小写,但推荐在Json配置文件中按照小驼峰命名法规范书写。
这样就大功告成了。如果我们使用了基本视图,我们依旧可以看到和原来一样的效果:
有关FrontWork配置中心组件的介绍就是这些。在实际的使用中,FrontWork的配置项并不止于此,有许多其他的配置我们将在后面介绍其他功能组件的时候一起介绍。