优维低代码:Redirect 路由重定向If 条件渲染

news2024/11/25 18:34:39

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


连载第三十期

《高级指引:Redirect 路由重定向&If 条件渲染》

1.Redirect 路由重定向

可以为指定路由设置重定向目标,该目标可以设置为固定目标,也可以设置为一个 Resolvable 的目标(即通过类似 useResolves 的机制动态计算得到):

# 固定目标

例如对于以下路由配置:

path: "${APP.homepage}"exact: trueredirect: "${APP.homepage}/product"

当用户访问该应用首页时,将自动重定向到 /product 子页面去。

# Resolvable 目标

又如以下使用 Resolvable 目标的路由配置:​​​​​​​

path: "${APP.homepage}"exact: trueredirect:  useProvider: "your-provider"  transform:    redirect: "${APP.homepage}/product/@{productId}"

当用户访问该应用首页时,系统将调用 your-provider 的 resolve 方法,将计算得到的 productId 拼装成 /product/@{productId} 作为跳转目标。

注意:当使用 Resolvable 目标时,应始终返回一个 { redirect?: string } 的对象,当返回的 redirect 属性为 falsy 值时,系统将忽略重定向,继续执行子路由的匹配或构件列表的渲染。

2.If 条件渲染

有些场景下,我们希望 Storyboard 可以根据特性开关或其它动态数据进行特定配置,例如根据用户权限决定使用哪些构件/路由。

# 普通条件

例如对于以下构件配置:​​​​​​​

bricks:  - if: '<% !!FLAGS["your-feature"] %>'    brick: your-brick-a  - if: '<% !FLAGS["your-feature"] %>'    brick: "your-brick-b"

当特性开关 your-feature 打开时,将显示构件 your-brick-a,反之则显示 your-brick-b。

Tips: 从 brick_next: 1.27.4 开始,if 表达式不再要求必须返回 boolean 值,平台将自动做类型转换。

当使用参数注入或 transform 时,应确认最终得到一个 `boolean` 值,例如在求值占位符中可以使用取反运算符 `!!someValue`,在注入占位符中使用 `| bool` 或 `| not`,因为平台仅在识别到 `if: false` 时才跳过渲染。

# Resolvable 条件

当条件需要请求服务端接口或需要更复杂的逻辑计算得到时,可以使用 Resolvable 条件(类似 useResolves 的机制):​​​​​​​

bricks:  - if:      useProvider: "your-permission-provider"      transform:        if: "@{permOfUpdateTools | bool}"    brick: "your-brick-a"  - if:      useProvider: "your-permission-provider"      transform:        if: "@{permOfUpdateTools | not}"    brick: "your-brick-b"

当系统渲染时,如果 your-permission-provider 返回的对象中的 permOfUpdateTools 为 true 时,页面将显示 your-brick-a 构件,反之将显示为 your-brick-b。

注意:当使用 Resolvable 条件时,应始终返回一个 { if?: boolean } 的对象。

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

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

相关文章

Centos7扩容root分区

Background 安装centos7系统时&#xff0c;如果没有自定义分区&#xff0c;系统默认给root分配的空间只有50G&#xff0c;其他空间都分配给了你创建的普通用户/home目录。这里我们把home的空间匀出一部分给root。 1、首先要注意数据安全 备份home目录的数据 tar zcf /tmp/hom…

vue学习1~18

1. vue基础知识和原理 1.1 初识Vue 想让Vue工作&#xff0c;就必须创建一个Vue实例&#xff0c;且要传入一个配置对象demo容器里的代码依然符合html规范&#xff0c;只不过混入了一些特殊的Vue语法demo容器里的代码被称为【Vue模板】Vue实例和容器是一一对应的真实开发中只有…

城市三维地理信息可视化 技术解析

一、三维地理信息系统分析空间数据的科学工具 三维地理信息系统&#xff0c;即三维GIS&#xff0c;是对包括大气层在内的地球表层&#xff0c;与地理有关的数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。 基于三维GIS将现实世界中三维对象的相关属性与空间位…

什么是CRM系统?CRM的价值体现在哪里?

图为简道云看板对企业来说&#xff0c;完整的工作流程可以概括为售前、售中和售后三个阶段。每一个阶段都需要不同的管理。而CRM客户关系管理系统&#xff0c;能够帮助企业在这三个阶段进行业务管理及客户管理&#xff0c;帮助企业更好地运营&#xff0c;提高企业的竞争力。 简…

软件设计与体系结构简答题汇总

假设系统中有三个类&#xff0c;分别为类 A 、类 B 和类 C 。在现有的设计中&#xff0c;让类 A 直接依赖类 B &#xff0c;如果要将类 A 改为依赖类 C &#xff0c;必须通过修改类 A 的代码来达成&#xff0c;请问这样的设计符合开闭原则吗&#xff08; 2 分&#xff09;&…

跟着官方帮助文档学ICEM网格划分(附视频教程)

作者 | 如鹰展翅上腾 导读&#xff1a;划分结构化网格是ICEM软件的一大特色&#xff0c;自学的话会比较耗时&#xff0c;如有人带的话&#xff0c;入门进阶都是比较快的&#xff0c;就像一层窗户纸一捅就破。软件是使我们研究的问题得以求解的工具&#xff0c;重点侧向于操作…

毕业设计 基于大数据的服务器数据分析与可视化系统 -python 可视化 大数据

文章目录0 前言1 课题背景2 实现效果3 数据收集分析过程**总体框架图****kafka 创建日志主题****flume 收集日志写到 kafka****python 读取 kafka 实时处理****数据分析可视化**4 Flask框架5 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&…

企业数据流转5个大坑,你最烦哪个?

对于公司来说&#xff0c;注重数据安全已然是一个必须项&#xff0c;如何保护数据安全也是让公司管理者头痛的问题。 云宝贝罗列了公司5个常见的数据安全场景&#xff0c;并给出了应对方法&#xff0c;看看你公司有没有踩雷。 01、文件云端流转&#xff0c;不落地 “员工在公…

【初阶数据结构】——限定性线性表:栈 和 队列详解(C描述)

文章目录前言1. 栈1.1 栈的概念及结构1.2栈的实现1.2.1 动态or静态1.2.2 结构介绍1.2.3 初始化栈1.2.4 销毁栈1.2.5 压栈1.2.6 出栈1.2.7 判空1.2.8 取栈顶元素1.2.9 获取有效元素个数1.3 测试1.4 源码展示1.4.1 stack.h1.4.2 stack.c1.4.3 test.c2. 队列2.1 队列的概念及结构2…

2022年最新全国各省五级行政区划代码及名称数据(省-市-区县-乡镇-村)

1、数据来源&#xff1a;国家统计局 2、官方更新时间&#xff1a;2021年10月31日 3、数据样例&#xff1a; 包括字段&#xff1a;省份名称、城市代码、城市名称、区县代码、区县名称、乡镇街道代码、乡镇街道名称、居委会村代码、城乡分类代码、居委会村名称、完整五级地址 …

Java的JFrame窗体的创建(两种方法)

第一种直接创建 package com.jwz.h综合项目;import javax.swing.*;public class Test {public static void main(String[] args) {//创建宽高jFrame.setSize(488, 580);//创建窗口对象JFrame jFrame new JFrame();jFrame.setTitle("拼图游戏");//设置标题jFrame.se…

肝了47天最终上岸美团,这份最新版千页Java八股到底是有多全面?

上周接到美团HR打来的电话&#xff08;吃惊&#xff01;&#xff09;&#xff0c;居然约我面试。 一面和二面都是电话面试&#xff0c;一面的的时候美团小哥给我一个链接&#xff0c;需要手写代码就在那个页面里面写。一面比较顺利&#xff0c;感觉美团问得挺全面的。二面的时…

数据机构——顺序表的基本操作

一、实验要求 二、实验代码 # include "bits/stdc.h"using namespace std;#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXSIZE 100 //定义顺序表的最大长度//定义数据结构体 typedef struct book {int number; //编号string name; //名称float p…

二、CSS下拉菜单[颜色布局、子影响父]

一、源码 效果 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作

目录 鼠标操作 获取鼠标所在位置坐标 获取鼠标所在位置的RGB值 鼠标点击 鼠标按下和释放 鼠标移动 鼠标拖拽 滚轮滚动 键盘操作 输入英文字符 普通按键操作press 按下与抬起 组合键hotkey 持续按键hold 弹出对话框 alert confirm prompt password 鼠标操作 …

iconfont在vue项目中的使用及如何在一个项目中引入多个iconfont图标库

iconfont的使用 下载方式本文不做详细的展示 重点演示一下同一个项目如何使用两个图标库 有的时候在一个项目的基础上,把当前的项目改为另一个项目,不想影响到当前的字体图标,或者不知道之前的字体图标管理的图标库在哪里了.再引入一个新的字体图标库不失为一个好办法,那么如何…

DASCTF NOV X联合出题人2022年度积分榜争夺赛 RE-部分题解

babytea 一轮8位加密 先对输入的前4位进行异或0x1234567 在对输入的后4位进行异或0x89ABCDEF 对del的条件加密为del>>180时进行异或0x1234567 到了32时 就把先对输入的前4位作为异或的xor1 先对输入的后4位进行异或xor2 逻辑整理下那么就是 void encrypt(uint32_t*…

Linux安装elasticsearch、IK分词器和kibana

简介&#xff1a; 因为内网环境不能上外网&#xff0c;安装最新的版本有问题而且不容易排查&#xff0c;所以安装了比较老的一个版本6.2.2。在安装的时候&#xff0c;为了讲清楚所有文件源头&#xff0c;所以介绍的啰嗦&#xff0c;但是很详细。 这里主要说明elasticsearch、ki…

如何用R语言在机器学习中建立集成模型?

介绍 在本文中&#xff0c;我将向您介绍集成建模的基础知识。 另外&#xff0c;为了向您提供有关集成建模的实践经验&#xff0c;我们将使用R进行集成。最近我们被客户要求撰写关于集成模型的研究报告&#xff0c;包括一些图形和统计输出。 1.什么是集成&#xff1f; 通常&am…

简单描述标准生成树协议STP

简单描述标准生成树协议STP 生成树协议STP 为什么需要生成树 如上图所示网络拓扑&#xff0c;如果没有生成树协议&#xff0c;在网络通信开始时&#xff0c;假设PC0向PC1发送一个数据包&#xff0c;交换机S2的MAC地址表中并没有对应的MAC地址&#xff0c;因此会产生ARP洪泛&a…