首页 > 其他分享 >优维低代码:Redirect 路由重定向&If 条件渲染

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

时间:2022-11-28 18:08:39浏览次数:42  
标签:Redirect 重定向 Resolvable provider 优维低 brick your 路由

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

优维低代码:Redirect 路由重定向&If 条件渲染_路由配置_02

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


连载第三十期

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

1.Redirect 路由重定向

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

# 固定目标

例如对于以下路由配置:

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

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

# Resolvable 目标

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

path: "${APP.homepage}"
exact: true
redirect:
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 } 的对象。

标签:Redirect,重定向,Resolvable,provider,优维低,brick,your,路由
From: https://blog.51cto.com/u_15605878/5893209

相关文章

  • 微信小程序js获取路由参数,获取页面路由参数(封装好的方法,即拿即用)
    //获取页面URL参数exportfunctiongetLocationParams(name){//获取页面栈constpages=getCurrentPages();//获取路由参数constcurPage=pages[pages.......
  • WCF 4.0路由服务Routing Service
    在面向服务的应用系统中,最重要的概念就是消息,消息的传输是一个非常重要的问题。而在大多数情况下,消息要经历多个网络节点,这里会涉及到消息路由问题。WS规......
  • 动态路由---OSPF接口类型和DR
    1.OSPF网络类型一种接口变量,这个变量将影响OSPF在接口上的工作,如:发送报文、是否选举DR、BDR等2.DR和BDR广播型网络MA和NBMA网络中,为了减少邻接关系的数量,从而减......
  • 路由器模式“11b only”是什么意思
    路由器模式“11bonly”是什么意思“路由器11b后面带“only”的就是只使用这一种速率;对比来说还一种带“MIXED”的是向下兼容的混合模式(兼容11g和11n)。” 更多>......
  • 如何解决调试Modbus TCP用到的路由器总是会自动中断wifi连接?设置优先使用无线网络的
    家里有2个路由器,设置参数完全一样,相互替换就能上网。现在的问题是:wifi在使用过程中,用另个空闲的路由器连接1个Server网关、1个Client网关和笔记本电脑进行调试(注意这3个网......
  • 动态路由---ODPF建立邻居的条件
    1.建立条件2.RouterID相同情况下的错误R1syssysnameR1intg0/0/0ipadd12.0.0.124ospf1router-id1.1.1.1a0network12.0.0.00.0.0.255R2syssysna......
  • CCNP Day5 EIGRP默认路由三
    1、网络拓扑2、基础Eigrp配置R1>R1>enableR1#configtEnterconfigurationcommands,oneperline.EndwithCNTL/Z.R1(config)#interfacef0/0R1(config-if)#......
  • DRF路由、认证、权限、频率
    DRF路由、认证、权限、频率目录DRF路由、认证、权限、频率路由原来直接在urls.py中直接.as_view()即可现在继承了ModelViewSet的视图类action的使用认证源码写认证类认证......
  • Django路由层
    Django路由层目录Django路由层路由匹配无名分组有名分组反向解析无名分组反向解析有名分组反向解析路由分发名称空间伪静态虚拟环境null路由匹配#url方法第一个参数是......
  • spring gateway路由出现503、404错误解决方法
    查资料发现在网关出现503错误是因为全局过滤器没有加载(ReactiveLoadBalancerClientFilter),只需要将含有这个过滤器的依赖进行导入就行了<dependency><groupId>org.......