TaskBuilder前端组件简介

3.3.3.1前端组件的分类
前端页面是由众多组件层层嵌套构成的,这些组件是任讯信息自主研发的一套前端UI组件,称为tfp组件,这些组件根据其功能和特点又分为几大类,它们的继承关系如下图所示:
在这里插入图片描述

从图中可知,所有组件都是从一个名为Component的根组件继承过来的,然后分为不可视组件和可视组件,不可视组件就是在界面里不显示任何内容的组件,例如服务请求组件和计数器组件;可视组件就是在界面里会显示具体内容的组件,分为以下几种类型:
容器组件:是指可以在其内部放置其他组件的容器型组件,例如布局组件、面板组件、表单组件、选项卡组件等。整个tfp页面最顶层的组件就是页面(Page)组件,它也是容器组件,其他组件都是放在页面组件或其子组件中的,一个页面有且只能有一个页面组件。
表单输入项:用来显示或录入动态数据的组件,例如单行文本、单选、多选、下拉列表等组件,其中隐藏域组件实际也不在界面里显示任何内容,但是习惯上将其作为输入项放在表单里,用来存放一些临时性的数据,所以没把该组件放到不可视组件中;可以通过 组件编号.value 获取或设置输入项的值,通过数据绑定格式属性可以设置输入项在绑定后台数据时采用的格式。
图表:用来显示图形化的统计报表,包括折线图、柱状图、条形图、饼状图等;
其他可视组件:还有一些可视化组件,不属于上面这些类型中的任何一种,包括可编辑表格、树形组件、文本标签、甘特图等。
3.3.3.2前端组件的三种运行环境
前端组件的代码在整个生命周期中会分别运行在下面三种环境中:
设计时:在TaskBuilder的前端页面设计器内对组件进行设计时,组件处于设计时阶段,在该阶段,组件不能进行实际的互动操作,例如不能显示或录入数据,只能用前端页面设计器提供的相关功能对组件的样式、属性和事件等信息进行设置,设置的信息最后都统一按照JSON格式保存到扩展名为tfp的文件内。
编译时:在用户访问tfp文件时,如果该文件还没有编译,或者编译后,tfp文件又进行了修改,则任擎会将该文件编译为HTML格式的文件,然后返回给浏览器,以便浏览器加载显示,在这个阶段,前端组件处于编译时环境,任擎会使用组件的渲染器进行编译。
运行时:当页面在浏览器里显示时,页面中的所有组件就进入了运行时状态,在运行时,组件可以绑定后台服务查询到的数据,可以让用户进行点击、输入、选择等操作。
3.3.3.3前端组件的构成
一个完整的前端组件由以下几部分构成:
3.3.3.3.1元数据(MetaData)
用来定义每种组件具体都有哪些属性、默认样式、事件和方法,属性包括名称、说明、数据类型、可选值和默认值等,事件包括名称、说明、参数名称和类型等,方法包括名称、说明、参数名称和类型等。元数据相当于组件的数据结构,在TaskBuilder里选中组件后,通过元数据可以决定在右侧的属性和事件设置面板里具体要显示哪些属性和事件,在JS脚本编辑器里调用组件方法时,也是通过分析组件的元数据来决定具体哪个组件有哪些方法可以调用,以及需要传递哪些参数等,下图是图片组件的元数据内容:
在这里插入图片描述

3.3.3.3.2数据模型(DataModel)
这里的数据模型是指用来存储前端组件的属性、样式和事件等信息的JSON对象,与前面介绍的用来存储数据库表或视图信息的数据模型不是一个东西。在TaskBuilder里设置组件的样式、属性和事件后,设置的信息都会保存到该组件对应的数据模型对象内,然后在保存tfp页面时,会转换为JSON格式的字符串保存到tfp文件中,在前端页面设计器底部点击“TFP源码”可以看到页面内所有组件的数据模型的JSON格式的信息。在运行时,可以通过 组件编号.dataModel获得组件的数据模型信息,但不建议直接修改该变量的值,因为单独修改数据模型中的属性或样式值不会造成组件对应的HTML元素的变化,应该通过设置组件控制器对象的属性、样式或调用其相关方法来实现,因为执行这些操作时,不仅会修改数据模型里对应的属性或样式值,还会同步修改组件的相关HTML元素。
所有tfp组件的数据模型都有以下属性:
id:组件编号,类型为字符串,同一个页面里,组件编号不能重复;
type:组件类型,类型为字符串,例如Panel(面板组件)、Label(文本标签)、Button(按钮)等;
styles:组件的CSS样式设置,类型为JSON对象,里面的每个属性对应一个CSS样式。
如果是容器组件,则会多一个名为components的属性,类型为数组,里面是子组件的JSON对象。其他属性则根据组件类型的不同而不同,例如所有输入项组件都有value属性,表示输入项的值,数据表格组件有columns属性,用来设置表格的列等。
另外,如果组件设置了事件,则在组件的数据模型对象中,还会出现事件类属性。
点击前端页面设计器底部的“TFP源码”可以查看页面内所有组件的数据模型代码,下图是一个按钮组件的数据模型代码:
在这里插入图片描述

3.3.3.3.3控制器(Controller)
我们通常情况下所说的组件实际上就是指该组件的控制器对象,不管是在设计时,还是编译时或运行时,都需要使用控制器对象来设置组件的数据和控制组件的行为。
在运行时,tfp前端框架会为页面里的每个tfp组件生成一个对应的控制器对象,可以用组件编号作为变量名来访问该组件的控制器对象,通过该对象,可以访问或操作组件的以下信息:
值:所有输入项类型的组件都有一个名为value的特殊属性,称为组件的值,可以通过 组件编号.value 的形式获取或设置组件的值。
获取和设置输入项值的示例代码:
let txt = text1.value; //获取text1组件的值并赋值给txt变量
text1.value = ‘Hello’; //将text1组件的值设置为“Hello”
属性:是指给每种组件定义的一些参数,在TaskBuilder的前端页面设计器里选中组件后,可以在右侧的属性设置面板里查看和设置这些属性。有些属性是通用的,例如所有组件都有组件编号(id)、组件类型(type)这两个属性,所有可视组件都有CSS样式类和自定义CSS样式属性,所有表单输入项都有数据绑定格式、组件备注、输入提示、必填、只读、禁用等属性。其他属性则根据组件类型的不同而不同。属性基本上都是在设计时设置的,某些组件的某些属性只能在设计时设置,不支持在运行时修改,具体请查看组件的说明。
设置组件属性的示例代码:
image1.src = ‘/images/logo.jpg’; //设置名为image1的图片组件要显示的图片的路径
样式:是指可以控制组件外观显示的CSS样式设置项,例如宽度、高度、文字颜色、背景颜色、边框样式、边距等,在TaskBuilder的前端页面设计器里选中组件后,可以在设计器上部的样式设置面板里查看和设置这些样式。不可视组件不需要也不能设置样式。
设置组件样式的代码:
label1.css(‘color’, ‘red’); //将名为label1的文本标签组件的文字颜色设置为红色
事件:是指在页面运行的过程中,由浏览器或者用户执行的某个操作触发的、与各个组件有关的事件,例如页面内容加载完毕事件、按钮点击事件、表单提交后事件等。在TaskBuilder的前端页面设计器里选中组件后,点击右侧边栏里的“事件”选项卡,可以在此查看或设置组件的各种事件,在事件输入框中双击鼠标可以查看和编辑事件处理函数的具体内容,例如点击确定按钮后提交表单,表单提交完毕后关闭当前对话框等。事件一般不需要通过脚本手动触发,所以就不提供示例代码了。
方法:是指各种组件对外提供的各项功能,以便在页面脚本中调用,例如调用表单组件的submit()方法可以提交表单,调用数据表格组件的reloadData()方法可以重新加载表格数据。
获取或设置组件的值、属性和样式,可以调用组件的方法,
代用组件方法的示例代码如下:
form1.submit(); //提交表单组件form1中所有输入项的数据等等
3.3.3.3.4渲染器(Render)
是指用来生成组件HTML代码的JavaScript对象,可视组件都必须有渲染器,渲染器可以通过组件的数据模型里设置的属性、样式和事件等信息生成该组件对应的HTML代码。设计时会使用组件的渲染器动态生成组件的HTML代码并显示在页面中,编译时会使用组件的渲染器生成组件的HTML代码保存到整个页面的HTML文件中,运行时,正常不需要使用组件的渲染器,因为编译时已经把组件的HTML代码都生成了,但如果要使用tfp.new()方法动态创建组件,则也会用到组件的渲染器。
3.3.3.3.5样式文件
可视组件都有专门的CSS样式文件,用来定义组件内各个HTML元素的显示样式,有的组件还会针对深色背景和浅色背景提供两套CSS样式文件,以便针对不同的背景颜色提供不同的外观样式。
3.3.3.3.6资源文件
前端组件用到的图片、图标、以及第三方的css文件和js脚本等统称为组件的资源文件,这些文件属于辅助文件,不会编译打包到最终的HTML文件中,
在编译tfp文件时,会先用各个组件的渲染器根据自己数据模型里的信息生成整个页面的HTML代码,然后再将页面里所有组件的元数据、控制器和样式文件的代码全部打包压缩后放到该HTML文件中,这样,当浏览器打开该HTML页面时,就不需要再从服务器分别加载这些信息,可以实现页面的秒开。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/66704.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决

前言 今天在使用linux的时候,使用上下键想翻出历史命令时,却出现[[A[[A[[A[[B^[[B这种东东,而tab键补全命令的功能也无法使用。最终发现是由于当前用户使用的shell是/bin/sh的原因。 解决方法 运行以下命令,将默认 shell 设置为…

FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )

以Xilinx 公司Virtex-II 系列FPGA 为例,其基本结构由下图所示。它是主要由两大部分组成:可编程输入/输出(Programmable I/Os)部分和内部可配置(Configurable Logic)部分。 可编程输入/输出(I/Os…

《零基础Go语言算法实战》【题目 1-11】格式化字符串

《零基础Go语言算法实战》 【题目 1-11】格式化字符串 在 Go 语言中,找到使用变量格式化字符串而不打印值的简单方法。 【解答】 在 Go 语言中,在不打印值的情况下进行格式化的最简单方法是使用 fmt.Sprintf() 函数, 它返回一个格式化的…

Virtualbox7.1.4安装Proxmox

准备工作 有以下两个大步骤: 第一步、安装Virtualbox 最新版本安装过程遇到问题参考: VirtualBox新版本报错 Invalid installation directory解决方案_virtualbox invalid installation directory-CSDN博客 第二步、下载Proxmox 官网下载地址&…

Apache JMeter 压力测试使用说明

文章目录 一、 安装步骤步骤一 下载相关的包步骤二 安装 Jmeter步骤三 设置 Jmeter 工具语言类型为中文 二、使用工具2.1 创建测试任务步骤一 创建线程组步骤二 创建 HTTP 请求 2.2 配置 HTTP 默认参数添加 HTTP消息头管理器HTTP请求默认值 2.3 添加 查看结果监听器2.4 查看结果…

yum换源

背景描述 源:阿里云: 系统:centos7 https://developer.aliyun.com/mirror/其他参考地址: https://developer.aliyun.com/mirror/centos?spma2c6h.13651102.0.0.3e221b11UchtP5https://developer.aliyun.com/mirror/centos-vau…

《跟我学Spring Boot开发》系列文章索引❤(2025.01.09更新)

章节文章名备注第1节Spring Boot(1)基于Eclipse搭建Spring Boot开发环境环境搭建第2节Spring Boot(2)解决Maven下载依赖缓慢的问题给火车头提提速第3节Spring Boot(3)教你手工搭建Spring Boot项目纯手工玩法…

AIDD-人工智能药物设计-人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题

mLife | 人工智能破解酶稳定性定向进化中的多个突变位点高效重组问题 优化酶的热稳定性对于蛋白质科学和工业应用至关重要。目前,通过(半)理性设计和随机诱变方法可以较为准确地设计多个增强酶热稳定性的单点突变。但当组合多个突变时&#…

Apache Hadoop YARN框架概述

一、YARN产生和发展简史 1.1背景 数据、程序、运算资源(内存、CPU)三者组在一起,才能完成数据的计算处理过程。在单机环境下,三者之间协调配合不是太大问题。为了应对海量数据的处理场景,Hadoop软件出现并提供了分布…

江科大STM32入门——UART通信笔记总结

wx:嵌入式工程师成长日记 1、简介 简单双向串口通信有两根通信线(发送端TX和接收端RX)TX与RX要交叉连接当只需单向的数据传输时,可以只接一根通信线当电平标准不一致时,需要加电平转换芯片 传输模式:全双工;时钟&…

KG-CoT:基于知识图谱的大语言模型问答的思维链提示

一些符号定义 知识图谱实体数量: n n n 知识图谱中关系类型数量: m m m 三元组矩阵: M ∈ { 0 , 1 } n n m \textbf{M} \in \{0, 1\}^{n \times n \times m} M∈{0,1}nnm, M i j k 1 M_{ij}^k 1 Mijk​1则说明实体 i i i和实…

超完整Docker学习记录,Docker常用命令详解

前言 关于国内拉取不到docker镜像的问题,可以利用Github Action将需要的镜像转存到阿里云私有仓库,然后再通过阿里云私有仓库去拉取就可以了。 参考项目地址:使用Github Action将国外的Docker镜像转存到阿里云私有仓库 一、Docker简介 Do…

AIGC 新浪潮|Story CN meetups 将于 1 月 10-14 日举办!

随着 Web3 行业发展进入全新阶段,与生成式人工智能(AIGC)技术融合正在创造潜力新星项目。也是目前的互联网生态下,任何普通民众都有权利创作高质量的音乐、艺术、散文和视频内容,带来了用户生成内容(UGC&am…

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8(You Only Look Once)和OpenCV实现车道线和车辆检测,目标是创建一个可以检测道路上的车道并识别车辆的系统,并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

黑马跟学.苍穹外卖.Day04

黑马跟学.苍穹外卖.Day04 苍穹外卖-day04课程内容1. Redis入门1.1 Redis简介1.2 Redis下载与安装1.2.1 Redis下载1.2.2 Redis安装 1.3 Redis服务启动与停止1.3.1 服务启动命令1.3.2 客户端连接命令1.3.3 修改Redis配置文件1.3.4 Redis客户端图形工具 2. Redis数据类型2.1 五种常…

SOLID原则学习,开闭原则

文章目录 1. 定义2. 开闭原则的详细解释3. 实现开闭原则的方法4. 总结 1. 定义 开闭原则(Open-Closed Principle,OCP)是面向对象设计中的五大原则(SOLID)之一,由Bertrand Meyer提出。开闭原则的核心思想是…

filebeat、kafka

elk的架构 es数据库:非关系型数据库,json格式 logstash:收集日志 kibana:图形化的工具 ↓ 以上三种结合起来即为日志收集系统 filebeat 作用:filebeat是一款轻量级的日志收集工具,不依赖java环境&…

Qt重写webrtc的demo peerconnection

整个demo为: 可以选择多个编码方式: cmake_minimum_required(VERSION 3.5)project(untitled LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON)set(CMA…

【Notepad++】Notepad++如何删除包含某个字符串所在的行

Notepad如何删除包含某个字符串所在的行 一,简介二,操作方法三,总结 一,简介 在使用beyoundcompare软件进行对比的时候,常常会出现一些无关紧要的地方,且所在行的内容是变化的,不方便进行比较&…

python无需验证码免登录12306抢票 --selenium(2)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 [TOC](python无需验证码免登录12306抢票 --selenium(2)) 前言 提示:这里可以添加本文要记录的大概内容: 就在刚刚我抢的票:2025年1月8日…