优维低代码实践:模板

news2024/11/25 2:24:00

 优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。

优维低代码实践连载第⑥期

《模板》

Visual Builder 提供模板能力,您可以将单个或多个构件进行排列组合,组装成您想要的模板,并在需要的地方引入;模板通常被认为是一种具有通用性,并带有一定复用能力的构件;使用模板,让我们不用每次编排都需要从头零开始编排,不需要每次都创建一堆之前已经创建过的实例,减少了重复劳动的工作,并且可以提高程序的健壮性。

下面我们将讲解它是如何使用的。

进入到我们的工程项目中,现在我们收到一个需求,我们需要将新建,编辑任务详情从弹窗编辑的形式做成新的独立页面编辑,在新的页面中也要使用到这个表单,并且结构完全一致;这个时候,我们可以选择将其转化为模板,这样的话,其他页面就可直接引用这个模板并快速使用啦,那么我们要怎么做呢?跟着我的步骤往下操作吧~

一、模板创建

1.1 构件转化为子模板

 

 点击确认后会自动跳转至新创建的模板页面,如下:

 

然后在构件树上点击 tpl-task-form, 看到右侧参数面板,将代理设置改成如下:

1.2 tpl-task-form 模板代理设置修改

# 模板代理,可代理属性,事件,方法,插槽
# 模板等同于一个黑盒,对外只暴露特定接口字段
# 需要通过 ref 指向构件,并且构件需要配置相应的 ref,才能够正确代理出去
# 下面的含义为, 代理ref等于form的构件,
# 代理其事情: validate.error, validate.success
# 代理其方法: setInitValue, validate
# 这个,我们就可以在模板对这个构件进行监听,也可以在外层执行它里面构件的方法
# 具体使用在下面教程会讲述
events:
  validate.error:
    ref: form
    refEvent: validate.error
  validate.success:
    ref: form
    refEvent: validate.success
methods:
  setInitValue:
    ref: form
    refMethod: setInitValue
  validate:
    ref: form
    refMethod: validate

1.3 DATA 数据新增

# 模板的属性,如同构件的属性一样,需要通过外层传入,模板才能正确使用
# 与页面不同,页面的变量存储在 CTX 中,而模板的变量存储在 STATE 中,
# 获取方式不一样,这里
数据名称: isEdit
类型: Value
Value: false


# ======= 分割线 ========
数据名称: staticValues
类型: Value

1.4 Form 编排修改

属性面板-属性:
  # 删除ID,在模板内尽量不要使用ID
  # 因为同个页面,可能使用到多个相同目标,这将导致页面中存在多个相同ID的元素
  # 导致匹配不精准
  layout: horizontal
事件面板-事件:
  # 清空
设置面板:
  # 重点: Ref 为模板内构件的特殊字段, 模板内代理的唯一标识
  # 可以理解为模板内的ID
  Ref: form

在一切修改完之后,记得点击 build & push 按钮哟~

二、编排修改

2.1 新增路由

基于UI8.0 空白页创建两个路由页面,分别是:

别名: 新增任务
path: APP.homepage/task/add
别名: 新增任务
path: APP.homepage/task/:instanceId/edit

2.2 新增任务页面编排修改

在 general-card 构件下新增 tpl-task-form(tips: 刚刚新增的模板) 构件,属性如下:

属性面板-属性:
  id: form
事件面板-事件:
  validate.success:
    - useProvider: providers-of-cmdb.instance-api-create-instance
      args:
        - TASK_FOR_VB_LESSON
        - |-
          <%
            {
              ...EVENT.detail,
              state: "待研发",
            }
          %>
      callback:
        success:
          - action: message.success
            args:
              - 任务创建成功
            # 页面回退
          - action: history.goBack
        error:
          - action: handleHttpError

在 general-card 下面新增 forms.general-form 构件,在其底下新增构件 forms.general-buttons,属性如下:

属性面板-属性:
  cancelText: 取消
  showCancelButton: true
  submitText: 提交
事件面板-事件:
  cancel.button.click:
    # 页面回退
    action: history.goBack
  submit.button.click:
    # 点击确定按钮,调用表单校验方法
    - target: '#form'
      method: validate

回到任务列表,找到添加按钮, 修改其属性:

事件面板-事件:
  general.button.click:
    # 点击添加任务按钮,跳转路由,到添加任务页面
    - action: history.push
      args:
        - '<% `${APP.homepage}/task/add` %>'

2.3 编辑任务页面编排修改

在 general-card 构件下新增 tpl-task-form(tips: 刚刚新增的模板) 构件,属性如下:

属性面板-属性:
  id: form
  isEdit: true
事件面板:
  事件:
    validate.success:
      - useProvider: providers-of-cmdb.instance-api-update-instance
        args:
          - TASK_FOR_VB_LESSON
          - <% PATH.instanceId %>
          - |-
            <%
              _.pick(EVENT.detail, [
                "name",
                "state",
                "assignee",
                "reporter",
                "time",
                "description",
              ])
            %>
        callback:
          success:
            - action: message.success
              args:
                - 任务修改成功
            - action: history.goBack
          error:
            - action: handleHttpError
  生命周期:
    onPageLoad:
      # 在页面加载后,请求获取实例详情的接口
      - useProvider: providers-of-cmdb.instance-api-get-detail
        args:
          - TASK_FOR_VB_LESSON
          - <% PATH.instanceId %>
        callback:
          success:
            # 数据回来后,设置表单的初始值
            - target: '#form'
              method: setInitValue
              args:
                - <% EVENT.detail %>
          error:
            - action: handleHttpError

新增构件 forms.general-form 构件,在其底下新增构件 forms.general-buttons,具体属性同 2.2 一致。

回到任务列表页面,在 table 下定位到编辑按钮,属性修改如下:

事件面板-事件:
  general.button.click:
    # 点击事件,跳转到编辑页面
    - action: history.push
      args:
        - <% `${APP.homepage}/task/${DATA.rowData.instanceId}/edit` %>

三、结语

由于我们在本章节中学习并使用了模板的能力,因此我们在新建页面时,可以快速使用模板进行页面的编排,这大大加快了我们的页面编排速度。

本章节中讲解了构件如何转化成子模板,以及相应的编排修改,另外我们也可以自己不通过构件转化,可以直接新建模版,添加构件,这里就不做展开了;可以自己查看相应文档进行学习,那么模板章节就到此结束啦,下节课我们讲解下菜单的配置使用以及面板屑的配置。

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

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

相关文章

如何提高测试用例的编写效率?

1、提高测试覆盖率 我们通过对测试用例的评审&#xff0c;进一步完善测试覆盖率。在评审过程中&#xff0c;不同的评审专家看待问题的角度不完全一致&#xff0c;因此我们需要充分考虑测试方法&#xff0c;扩充测试用例的全面性&#xff0c;确保基本功能和核心功能的覆盖率。 如…

操作系统课后题答案(费翔林)

仅为老师布置的课后题答案&#xff0c;仅供学习参考 习题2

数据的存储方式(Parquet、ORC)

文章目录 数据的存储方式按行存储按列存储 Parquest文件布局概念并行处理的单元 配置Row Group Size 行组的大小Data Page Size 数据页的大小 元数据数据页Hive下的Parquet实验Parquet简单工具的使用支持的组件 Apache ORC文件布局Stripe Hive下的Parquet实验ORC简单工具的使用…

NLP——part of speech (POS)中的隐马尔可夫模型 + Viterbi 算法

文章目录 POS隐马尔可夫模型计算简介转移概率矩阵&#xff08;Transition matrix&#xff09;观察矩阵&#xff08;Observation / emission Matrix&#xff09;预测 predictionVitervi 算法练习 POS 词性标注&#xff08;Part-of-Speech Tagging&#xff0c;POS Tagging&#…

【AUTOSAR-Code调试】:Wdog

【AUTOSAR-Code调试】&#xff1a;Wdog DavinciCfg 生成文件添加进GreenHill编译添加.c文件添加.h文件路径 接上篇【Davinci开发】&#xff1a;Wdg配置 DavinciCfg 生成文件添加进GreenHill编译 添加.c文件 添加.h文件路径

模拟实现 Spring AOP

文章目录 前言Spring AOPSpring AOP 概述Spring IoC 技术难点Spring IoC 框架思考需求分析 Spring IoC 技术难点实现模拟实现 AOP 具体代码 前言 Spring 是一种 Java 开发框架&#xff0c;其主要功能有两个&#xff1a;IoC(DI)和AOP。《模拟实现Spring AOP》是本人的一个编程训…

基于SSM的校园二手交易平台

一、源码获取&#xff1a; 链接点击直达&#xff1a;下载链接 二、系统架构&#xff1a; 使用技术&#xff1a; SpringSpringMVCMybatis 三、系统需求分析&#xff1a; 在如今的大学校园中&#xff0c;伴随着学生的购买能力的提高和每年的升学和毕业&#xff0c;存在许多…

调用阿里云API实现证件照生成

目录 1. 作者介绍2. 算法介绍2.1 阿里云介绍2.2 证件照生成背景2.3 图像分割算法 3.调用阿里云API进行证件照生成实例3.1 准备工作3.2 实验代码3.3 实验结果与分析 参考&#xff08;可供参考的链接和引用文献&#xff09; 1. 作者介绍 王逸腾&#xff0c;男&#xff0c;西安工…

ASEMI代理英飞凌TLD5097EL:理解和使用LED驱动器的综合指南

编辑-Z TLD5097EL是一款创新的LED驱动器&#xff0c;在照明行业掀起了波澜。这项先进的技术提供了广泛的好处&#xff0c;包括提高能源效率、延长使用寿命和增强性能。在本综合指南中&#xff0c;我们将探讨TLD5097EL的功能和优点&#xff0c;并提供如何有效利用该LED驱动器优…

python -- 绘制colorbar时设置标签为居中显示

python – 绘制colorbar时设置标签为居中显示 在海洋气象领域的相关研究中&#xff0c;对于一些异常信号的二维填色图绘制时&#xff0c;通常在设置colorbar都是以0为中心对称分布的。而在绘制colorbar时&#xff0c;由于存在负号会使得默认colorbar标签不太好看&#xff08;强…

window服务器环境将springboot jar包安装成一个window服务自启动

目录 1.下载WinSW工具 下载winswhttps://github.com/winsw/winsw/releases 2.新建一个Window Service信息的xml文件 3.将xml和exe重命名 4.安装卸载服务 5.修改配置文件 6.常用命令(注意winsw是exe名字 1.下载WinSW工具 下载winswhttps://github.com/winsw/winsw/rele…

图像降噪网络:KBNet 论文笔记

0 前言 Zhang Y, Li D, Shi X, et al. KBNet: Kernel Basis Network for Image Restoration[J]. arXiv preprint arXiv:2303.02881, 2023. https://arxiv.org/abs/2303.02881 论文主要提出了 Kernel Basis Attention Module 注意力模块&#xff0c;称为 KBA 模块。该模块可以轻…

[中阳期货】端午都有哪些习俗,为什么不能说快乐?

端午节&#xff08;屈原故里端午习俗&#xff09;&#xff0c;流行于湖北省宜昌市、秭归县的传统民俗&#xff0c;国家级非物质文化遗产之一。 “五月五&#xff08;农历&#xff09;&#xff0c;过端午。”端午节是中华民族的传统节日。《续齐谐记》、《荆楚岁时记》载&#x…

AI 人工智能介绍(一)

人工智能&#xff08;AI&#xff09;是一种利用计算机程序和算法来模拟人类智能的技术。通俗地说&#xff0c;就是让计算机能够像人一样思考、学习、推理和决策。 人工智能改变了我们的生活&#xff01;它被广泛应用于语音识别、计算机视觉、自然语言处理、智能机器人等多种领…

ubuntu20.04虚拟机安装

下载对应版本镜像文件&#xff08;iso&#xff09; 下载链接&#xff1a;https://releases.ubuntu.com/jammy/ 虚拟机安装工具为VMware 这里我的版本为下图所示 使用vmware创建虚拟机 1&#xff0c;点击 “创建新的虚拟机” 2&#xff0c;进入向导&#xff0c;选择自定义 …

基于docker部署的Selenium Grid分布式自动化测试

01、什么是Selenium Grid Selenium Grid是Selenium套件的一部分&#xff0c;它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。 Selenium Grid有两个版本——老版本Grid 1和新版本Grid 2。我们只对新版本做介绍&#xff0c;因为Selenium团队已经逐渐遗弃老版…

非线性规划求解方法:序列线性规划(Sequential linear programming)

来源&#xff1a;Cornell University Computational Optimization Open Textbook&#xff1a;SLP​​​​​​​ 目录 1.介绍 2.理论和方法 2.1 问题形式 2.1.1 NLP问题形式 2.1.2 SLP问题形式 2.2 步长边界 Step Bounds 2.3 完整的SLP算法 3.案例 3.1 example1 3.2…

数据结构:树状数组详解

一. 背景 那么我们为什么要用树状数组呢? 在解决一些区间求和的问题中 , 简单描述就是&#xff0c;对于一个给定的数组A&#xff0c;希望能够设计一个update函数来修改其中一个数的值&#xff0c;然后再设计一个sum函数来计算数组下标再给定参数l和r之间的值之和。关键点在于…

Docker Swarm 集群搭建和使用 —— 筑梦之路

简单介绍 swarm 集群由管理节点&#xff08;Manager&#xff09;和工作节点&#xff08;Worker&#xff09;构成。 管理节点&#xff1a;主要负责整个集群的管理工作包括集群配置、服务管理等所有跟集群有关的工作。诸如监控集群状态、分发任务至工作节点等操作。 工作节点&…

【计算机视觉】使用 notebook 展示如何下载和运行 CLIP models,计算图片和文本相似度,实现 zero-shot 图片分类

文章目录 一、CLIP 模型二、准备三、加载模型四、查看图片处理器五、文本分词六、输入图片和文本&#xff0c;并可视化七、将图片和文字 encode 生成特征八、计算 cosine 相似度九、零样本进行图片分类十、编写函数进行图片分类十一、测试自己的函数十二、编写函数对多图片进行…