优维低代码实践:函数

MS1826A HDMI 多功能视频处理器 HDMI4进1出画面分割芯片 基本介绍 MS1826A 是一款多功能视频处理器,包含 4 路独立 HDMI 音视频输入通道、1 路 HDMI 音视 频输出通道以及 1 路独立可配置为输入或者输出的 SPDIF、I2S 音频信号。支持 4 个独立的字库定 制型 OSD;可处理隔行和逐行视频或者图形输入信号;有四路独立视频播放引擎可支持视频多路 播放。该产品提供了高质量的视频输出,有解隔行输入、视频增强,以及帧率转换的处理能力。 功能特征 视频输入输出  四路独立 HDMI 输入通道  一路 HDMI 输出通道  最高支持 4K@3 阅读详情

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


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

《函数》

▽

一、概述

在我们编排中,可能会遇到较为复杂的数据处理,这些复杂的数据处理我们可以封装成函数的调用,我们 visual-builder 的平台直接支持了编写和使用函数的能力,并且支持 JavaScript 或 TypeScript 编写,对页面数据无感知(不可以直接引用 CTX 等页面运行时数据,但可以使用参数传递过来),可以在 Evaluate Placeholder 求值占位符(表达式)中通过 FN.yourFunction(params) 来调用它。

例如,编写以下函数:

function sayHello(params) {
  return `Hello, ${params.name}`;
}

在编排时可以这样使用:

anyProp: '<% FN.sayHello({ name: "world" }) %>'

函数中还可以使用在表达式中的、与运行时状态无关的几个框架内置对象:

  • _(Lodash)
  • moment
  • FN
  • PIPES
  • TAG_URL
  • SAFE_TAG_URL
  • I18N
  • I18N_TEXT
  • IMG

例如,可以在函数中使用同一个微应用的其它函数

function sayHello(params) {
  return FN.sayExclamation(`Hello, ${params.name}`);
}

同时要注意的是:

编写 Storyboard Functions 时可以使用绝大多数的 JavaScript/TypeScript 语法,但由于它的定位仅为纯数据加工,以及出于对函数代码的健壮性和可维护性等因素的考虑,限制了部分语法和能力。

不推荐或不支持的语法清单:

  •  Async/Await: async function() { await … }
  •  Generator: function* a() { yield … }
  •  Class: class A { … }
  •  ThisExpression: this.anyProp
  •  VarDeclaration of var: var a
  •  LabeledStatement: anyLabel: …
  •  WithStatement: with (…) { … }
  •  DebuggerStatement: debugger

二、使用

在我们 visual-builder 中通过侧边栏中函数入口,可以管理我们每个项目的函数。我们以 FIRST-APP-LESSON-4 项目的函数来讲解。

每个函数我们都推荐书写测试用例去保证它的可用性和可维护性。

当我们完成函数的书写,别忘了 build & push 后,我们就能够在我们的编排中使用我们定义的函数了,使用时需要带上 FN的前缀。

并且我们在函数使用的地方可以快速编辑,直接点击函数名就可以弹出函数的编辑窗,根据实际情况调整代码,函数的支持使得我们处理复杂的问题更游刃有余。

DeepMD-kit描述子机制解析:从原子坐标到不变性特征 本文深入解析DeepMD-kit描述子机制,详细阐述如何将原子坐标转换为具有平移、旋转和排列不变性的特征表示。探讨了se_e2_a、se_e3等不同描述子的适用场景及性能优化技巧,帮助读者掌握这一关键技术在分子模拟中的应用实践。 阅读详情

相关推荐

绿盾注册机 使用手册

在很多涉及工程设计的单位(如建筑、模具、电路、广告等),电子图纸的应用极为普遍,而电子图纸的丢失、被盗对企业利益的影响是显而易见的,如果被竞争对手获取,甚至可能造成致命的打击。因此,对于这类企业,电子图纸的保密显得至关重要。绿盾信息安全管理软件充分考虑了电子图纸的各种可能传播途径,制定了针对性的解决方案,从而保证了电子图纸的安全。 我们总结了电子图纸的各种传播途径以及相应的对策,有如下几点:

998

前端第二阶段-12(JavaScript的函数function)

函数 封装一段代码,让代码可复用,增强代码的可读性。任何变量使用前都要先定义,不能访问还没有定义的变量 函数定义:函数声明式和函数表达式 函数调用: 语法:函数名(实参1,实参2,···); 形参: 形式上的参数, 在函数体的代码里内占位置 实参: 调用函数时, 传入的实际参数 形参解决差异性,可替代任何数据(包括number、string、function等)形参和实参是一一对应的,如果定义了参数,没有传参数就会变成undefin 函数的返回 函数三部曲 系统函数

Victory_bad的博客 263

YOLO11实战 第001期-基于yolo11的CrowdHuman密集行人目标检测实战文档(yolo格式数据免费获取)

1.数据阶段在拥挤/遮挡场景下,使用crowdhuman数据集重训练后的yolo11,效果表现较好。crowdhuman数据集标签如下,有Head BBox、Visible BBox、Full BBox。如下图显示:数据集介绍CrowdHuman数据集是旷世发布的用于行人检测的数据集,图片数据大多来自于google搜索。CrowdHuman数据集数据量比较大,15000张,5000张,验证集4370张。训练集和验证集中共有470K个实例,约每张图片包含23个人,同时存在各种各样的遮挡。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 2168

优维低代码实践:对接数据

接口字段定义需要说明下,我们的字段定义是包含了 uri 中的参数的,如上图所列的路由 v2/object/:objectId/instance/_search中,`objectId` 这个参数也定义在请求体中的,对于我们 uri 中的参数都需要单独占位,剩余的接口 data 参数一起占位,上面接口请求的参数如下写法。同样的如果使用的是 provider 类型的接口,我们也提供了 provider 类型的接口文档,可以通过 provider 文档 查看具体的信息。

EasyOps_DevOps的博客 1843

锐捷交换机路由器配置全攻略:从基础命令到高级功能(附常用命令速查表)

本文提供锐捷交换机路由器配置全攻略,涵盖从基础命令到高级功能的详细指南,包括VLAN划分、DHCP配置、链路聚合等实用技巧,并附常用命令速查表,帮助网络管理员快速掌握锐捷设备运维。

weixin_29285605的博客 519

Win11下WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文提供了一份详细的Win11下WSL2安装Ubuntu22.04的实战避坑指南。内容涵盖从WSL2核心安装、自定义安装路径,到更换国内镜像源以解决更新缓慢问题,并一站式配置完整的C++开发环境(包括GCC、CMake、vcpkg等),最后分享提升开发体验的进阶技巧,助你在Windows上打造高效的Linux开发工作站。

weixin_29260291的博客 562

优维低代码实践:模板

进入到我们的工程项目中,现在我们收到一个需求,我们需要将新建,编辑任务详情从弹窗编辑的形式做成新的独立页面编辑,在新的页面中也要使用到这个表单,并且结构完全一致;优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。由于我们在本章节中学习并使用了模板的能力,因此我们在新建页面时,可以快速使用模板进行页面的编排,这大大加快了我们的页面编排速度。

EasyOps_DevOps的博客 2094

SAP成本核算变式OKKN配置详解:从CK11N到CK24,手把手教你搞定标准成本发布

本文深入解析SAP成本核算变式OKKN的配置原理与实战应用,涵盖从CK11N到CK24的标准成本发布全流程。详细讲解数量结构控制、价值结构配置及间接费用计算规则,帮助成本会计精准掌握标准成本计算逻辑,解决BOM版本选择、工艺路线获取等常见问题,提升企业成本管理效率。

weixin_27219587的博客 292

优维低代码实践:搜索功能

在之前的示例中,我们有直接对接后端数据、通过事件进行接口的翻页数据请求等,但是在实际操作过程中,面对大量的数据,如果通过一页一页的翻阅查找,不方便且浪费时间,那么就会有搜索的功能要求,比如单字段的搜索,多字段的且、或搜索等。更改context中的请求内容,通过query.q或其他推送到url上的参数,进行或、并的匹配操作,从而达到动态获取用户输入的信息,并在页面刷新时,自动将搜索内容作为入参,调用后端接口匹配符合的数据并返回给前端渲染。修改输入框的事件内容。添加搜索框构件后,修改搜索框的属性。

EasyOps_DevOps的博客 688

有限时间 vs 固定时间 vs 预定时间滑模:稳定性分析与仿真验证方法对比(中)

有限时间滑模控制(FTSMC)和固定时间滑模控制(FixTSMC)是两种重要的控制策略,旨在实现系统状态的快速收敛。FTSMC通过设计滑模面和控制律,确保系统状态在有限时间内收敛到原点,但其收敛时间与初始状态相关。FixTSMC则进一步优化,使收敛时间与初始状态无关,适用于高动态环境,具有更强的鲁棒性和更平滑的控制信号。两种方法均通过李雅普诺夫函数证明其稳定性,并通过仿真验证其有效性。FixTSMC在工程应用中更为可靠,尤其适合安全关键系统。

Lyajpunov的博客 3225

使用.NET 免费开源包ViewFaceCore做一个人脸识别并注册的功能,没有比我更全的

本文介绍了一个基于WinForm的免费人脸识别系统实现方案。系统使用AForge和ViewFaceCore库,支持从USB或电脑自带摄像头采集图像,具备人脸注册和快速识别功能。硬件方面仅需普通摄像头,软件依赖多个NuGet包(如AForge.Video、ViewFaceCore等)。界面包含视频显示、图像预览和功能按钮控件,后台采用SQLServer存储用户面部特征数据。核心代码展示了人脸检测、特征提取和多线程处理逻辑,通过ViewFaceCore实现高效识别。系统具有识别速度快、准确率高的特点,适合Win

一个靠“吃代码”长大的程序猿,专治各种“Bug 饥饿症”。 817

优维低代码实践:编排优化Plus

在上一章节中,我们编排完成了任务列表的查询,以及新增任务实例这两功能,在本章节中,我们将对其进行功能的完善,包括:任务修改,任务删除,点击任务跳转至任务详情页面,搜索查询能力完善等,那么下面让我们开始学习吧!在上一章节的最后一点我们完成了任务实例的新增,接下来我们要用对任务进行修改,需要我们在编排开辟新的入口(Tabel增加操作列),并调用相关的Proivder接口进行修改,下面跟着我的编排快速过下吧~在做完修改功能后,增删改查我们就剩最后一个删除功能了,我们就已最简单的实现结束这块功能吧~

EasyOps_DevOps的博客 873

prplOS介绍

介绍prplOS是什么,特性、框架、编译等。

四儿家的小祖宗的博客 2134

优维低代码实践:打包发布

直接依赖,即直接添加的依赖。【新增依赖】、【编辑依赖】和【更新依赖】时都会检查并分析组件之间的依赖关系,获取满足版本限制的最新版本,以此作为实际版本。对于独立打包来说,Visual Builder会依据上面的选择,获取用户指定的版本,或者获取满足依赖限制的最新版本作为实际版本。在普通打包的情况下,微应用的部署会检查运行环境的框架代码、构件等组件是否满足依赖里的版本限制,不满足的话将会安装失败。微应用的运行,依赖于框架代码以及构件,因此,我们需要维护正确的依赖信息,才能将微应用运行所需要的依赖打进制品包内。

EasyOps_DevOps的博客 685

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

优维低代码实践:统计视图

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。首先在左侧侧边栏菜单选中图片tab,进入页面,点击右上角的 upload 按钮,上传图片,最后点击build & push,我们即可以对我们上传的图片进行使用了~详细请查看 《图片》章节。其中img的src,每个项目,每张图片都将不一样,请各位结合自己的项目使用相应的url。

EasyOps_DevOps的博客 997

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

优维低代码实践:Context / State

State 的能力和 Context 几乎完全一致,不同的是,Context 的作用域是整个页面、是全局的,我们的自定义模板,同一个模板在页面中可能有多个实例,如果直接使用 Context,则多个实例间的数据会互相影响。而 State 是局部的状态数据,相当于我们的局部变量,其只应用于模板的内部。PATH 的配置项是给 context 分组用的,当一个路由管理的 context 很多时,为了方便管理和查找,我们可以给每一个 context 进行分类,这样同一类下的 context 会放在同一目录下展示。

EasyOps_DevOps的博客 1146

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

优维低代码:Storyboard Functions 微应用函数

因此我们还提供了微应用级别的等价加工函数:Storyboard Functions 微应用函数,它与 Custom Processor 的能力基本一致,同样用于数据加工处理,但是可以直接在 Next Builder 中进行编写和使用,并跟随微应用一起发布。优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。该功能暂未开发完成。

EasyOps_DevOps的博客 631

优维低代码实践:权限设置

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。现在我们接到了一个新的需求,要求只有系统管理员才能添加任务,其他权限的角色不允许添加任务卡片,那么我们要怎么做呢?点击创建任务后,进入到详情内可以关联角色,这里就是分配权限点到能力了,由用户自己觉得,这里我们随便配置几个(为了延时,具体情况需要用户自身决定),点击确定即关联上权限。

EasyOps_DevOps的博客 1021

优维低代码实践:面包屑配置以及菜单配置

构件树上定位到 tpl-ui8-layout 这个构件,这个构件是我们的UI8.0布局构件,我们的菜单以及标题配置都可以在它上面进行编写,这里我们又学习到一种新的语法: APP.getMenu('xxx'), 这个表达式是专门用来获取菜单数据的,它可以根据入参 xxx,获取到具体的菜单数据,并传入构件中作为菜单入参,这里已经默认配置了一个 Mock 菜单ID,我们现在想要新增我们自己的菜单,并增加一个侧边栏进行展示,那么要怎么做呢?下面我们简单做一个面包屑配置,打开我们的路由参数面板。

EasyOps_DevOps的博客 1084

优维低代码实践:数据模型设计

让我们的视角回到 Visual Builder,模型我们建立好后,还需要将其与VB进行关联,依旧是回到模型页面, 点击右上角 关联模型 按钮,在弹窗内搜索 LESSON,找到我们刚刚新增的模型: TASK_FOR_VB_LESSON, 勾选然后点击保存,模型将于我们的微应用关联上,然后记得点击右上角的推送按钮哟,这样我们的微应用就能正常使用模型啦!本章节我们学习了模型的建立,字段设置与模型跟VB相关联,下节我将为大家介绍如何使用Provider,结合我们创建的模型,做一个简易的任务管理系统出来。

EasyOps_DevOps的博客 992

优维低代码实践:数据加工/转化详解

表达式的使用,大多数情况都是针对相对简单的场景,如果场景过于复杂,我们还是推荐使用微应用函数,因为您不仅可以在函数内拥有更多高级语法到操作,还可以针对您的函数编写测试用例,加强微应用的健壮性。在之前章节已经介绍过一些简单表达式的编写以及它们的含义,本节课讲介绍更加高级的用法,回到我们的编排,我们将给我们的表格增加一列创建时间,那么我们要怎么做呢?修改完毕后, 我们将在预览画布中看到数据更新,但是这个时间太长了,并不是我们想要的,那怎么办呢?最后看下编排预览画布,是符合我们的预期的。

EasyOps_DevOps的博客 631

优维低代码实践:页面编排优化与数据联调

在熟悉完上述几种场景的操作后,回到我们创建的第一个路由(页面),我对之前创建的的编排做了一些改造,将它的功能进行了简单地完善,将它变成了一个任务列表展示页面,并且支持查询任务模型数据,以及新增任务实例数据,还支持了搜索能力,那么我是怎么做到的呢,下着跟着我的操作学习一下吧!通过本节实践,您学习了我们最常用的几个API-CMDB的增删改查操作,构件的操作,查询接口的使用,以及新增接口的使用,这基本涵盖了我们日常页面编排的基本情况,其他操作基本上都是基于这些步骤之上进行拓展;至此,您就完成了新增任务的能力啦!

EasyOps_DevOps的博客 770

优维低代码实践:添加构件

找到构件后,可以通过鼠标拖拽构件的方式,将构件拖拽到屏幕中间的iframe预览区域,iframe预览区域可以快速接收构件信息并渲染效果。页面是不同的构件基于一定的业务逻辑和交互形成的。构件作为页面中最基础的元素,分为原子构件、通用构件、业务构件、模板(可复用的具有一定业务逻辑的多个构件封装而成)等。ps: 父构件的插槽位有哪些,可以点击父构件的说明文档进行查阅,不同的构件插槽位名称不同,位置不同;构件的添加要基于路由,即构件的添加的前提是要有一个路由页面,此处省略添加路由的介绍,具体可参考路由创建。

EasyOps_DevOps的博客 1048

优维低代码实践:图片和搜索

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。Visual Builder提供了图片上传的能力,并将上传的图片作为该微应用的资源之一,在打包部署时,能够直接部署在服务器上,避免资源的重复加载。点击高亮的构件或路由,查看该构件或路由的配置内容,点击代码框右上角的“详情链接”,可以打开新标签页查看页面整体编排内容和预览效果,并编辑调整。

EasyOps_DevOps的博客 617

十七年运维老兵万字长文讲透优维低代码~

以上,就是对优维整个低代码体系的一个梳理,其实从2020年向外业界去推低代码至今,我们已经积累很多的客户,包括从行业的不同的客户属性以及场景上面,我们都有落地的一些经验,以及在落地的过程中,我们遇到的一些难点,带来的价值等等,我们都有一些经验积累,下回再跟大家详细的分享一下。从2015年创业开始,优维前后服务了很多传统企业的项目客户,我们在服务的过程中其实也发现了一些自己的问题,特别是2019年底,有一个KA的客户提出了一个个性化的需求,对我们带来的触动是蛮大的。第一个,低代码其实也不是一个所谓的新技术。.

EasyOps_DevOps的博客 641

优维低代码实践:第一个微应用

下方则为工具栏面板,各个按钮的含义分别是:定位具体路由,前进,后退,刷新画布,Build&Push(推送最近storyboard到具体预览环境),跳转到预览页面,画布快照截图,设置预览画布宽高(默认自适应),检查(开启时定位构件,关闭时可以直接使用画布进行页面交互)。通过本节实践, 您可掌握如何创建了一个微应用,并且了解了路由页面的创建,以及 Visual Builder主画板各个区域的能力,下节实践我们将学习到 《数据模型以及数据对接》,将它变成一个动态的,具有一定功能的页面!

EasyOps_DevOps的博客 698
上一篇: 优维产品最佳实践:如何设计流水线?
下一篇: 万字解读B站FinOps落地经验与方法论...
优维科技EasyOps
博客等级 码龄5年 1483粉丝 395原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值