了解 Power Fx

已完成

在快速了解低代码开发之后,您和 Kiana 都注意到用于生成应用程序的编程语言(例如 C# 和 JavaScript)以及 Power Apps 中所用的 Power FX 之间的异同。

Microsoft Power Fx 是用于在基于画布的 Power Apps 中表达逻辑的低代码语言。 Power Fx 受 Microsoft Excel 启发,并遵循 Excel 表达式中的许多模式。

表达式和公式

但是,在 Excel 中不仅会写入表达式,还会写入如何计算特定单元格值的公式或配方。 公式 A1 = B2 * 2 始终定义 A1 的值,并在 B2 更改时自动重新计算。

Power Fx 遵循相同的公式模式。 单元格替换为控件或对象的属性。 以下示例是从 Stack Overflow 中获取本 Excel 公式以进行反向字符串搜索:

Excel 公式:=RIGHT(A1,LEN(A1)-FIND(

并从中创建了 Power Fx 公式。 不同的是,对单元格的引用已替换为对控件属性的引用:

Power Fx 在 Power Apps 中运行,公式为:=RIGHT(Input.Text,LEN(Input.Text)-FIND(

相同的语法和相同的函数不仅在 Power Fx 中有效,而且动画中的其他内容也值得注意。 当 Input.Text(顶部框)更改时,Label.Text(底部框)将自动重新计算。 该应用的行为就像电子表格,一直在重新计算,无需应用开发人员添加代码来指定实现方式。

声明性应用模型

许多传统应用程序开发堆栈具有在整个堆栈中开发的命令性模型。 换而言之,应用开发人员必须为应用中发生的一切编写代码:身份验证和授权、业务逻辑、用户界面、服务器或云服务配置等等。

Power Fx 是一种声明性语言,像 Excel 一样。 开发人员定义他们希望的行为,但由系统决定如何以及何时完成。 为了实现这一点,大多数工作是通过纯函数完成的,并且没有任何负面影响,因此 Power Fx 也是一种函数语言。

下面是另一个更加丰富多彩的示例,因为它使用公式来填充屏幕的颜色。 当控制红色、绿色和蓝色的滑块更改时,背景色会在重新计算后自动更改:

Power Fx 公式:Fill = RGBA( RedSlider.Value, GreenSlider.Value, BlueSLider.Value, 100% )

在其他语言中 OnChange 事件是常见的,但滑块控件没有。 事实上,没有任何方法可以显式设置“Fill”属性值。 这具有很大的优势:只有一个事实来源。 如果颜色无法正常工作,则只需要查看一个公式即可了解原因。 无需通过应用搜索以查找在意外时间设置属性的流氓代码段。 事实上,没有时间元素;公式值始终保持正确。

请注意动画中的其他内容:当滑块设置为深色时,红色、绿色和蓝色的标签将更改为白色以进行匹配。 这通过每个标签控件的 Color 属性上的简单公式而完成:

If(
    BlueSlider.Value + GreenSlider.Value + RedSlider.Value < 150,
    White,
    Black
)

用于设置标签颜色的逻辑与填充颜色是隔离的,这是两个完全不同的计算。 Power Fx 逻辑通常不是大型单体过程,而是许多独立的较小公式。 这更易于理解并启用增强功能,而不会干扰现有逻辑。

现在,命令性的分步逻辑有了时间和位置,而 Power Fx 也为该逻辑提供了一席之地。 应用将更改写回数据库,只需按一下按钮即可启动自动化,而电子表格不执行这些操作。 只要有可能,我们都赞成声明性方法,原因是上面引用的所有益处以及与 Excel 的一致性。

注意

要找到有关使用命令性开发技术的更多信息,请参阅在 Power Apps 中对画布应用使用命令性开发技术