共计 3230 个字符,预计需要花费 9 分钟才能阅读完成。
Power Fx 是一门语言,尽管它被举荐的场景是低代码,但咱们必须以一门语言角度对待它,能力更好的了解。
Power Fx 的创立是为了更好的辅助非专业开发人员,因而这门语言被设计的足够简略,心愿这门语言能够同时服务于业余与非专业开发者,这是个十分高尚的现实。
本周咱们就随着 Microsoft Power Fx 概述 这篇文章,具体理解一下这门语言是怎么做的。
概述
Notify("this is a problem", Error)
这就是 Power Fx 语言的一个例子,乍一看没什么特地的。
Power Fx 形容的是画布利用公式语言,也就是说,这个编程语言是专门为画布援用设计的。
那什么是画布利用呢?低代码、网站搭建、BI、Web Excel 这些通通都是画布利用,所以 Power Fx 其实是一门适应画布场景的语言,间接面向用户。
那这种画布语言应该具备什么个性呢?Power Fx 团队曾经有了一些思考:
- 简略:该语言设计本着简介简略的准则,这样才不便非开发人员上手。
- Excel 一致性:能够帮忙 Excel 开发者做常识迁徙,一部分是和微软 Excel 太胜利了无关,另一方面 Excel 表达式在画布语言畛域摸索的确深刻,有可取性。对不能满足的尝试借鉴 SQL 这种申明性语言。
- 申明性:这个最重要,即形容做什么,而不是如何或何时做。这个有点像 Jquery 转到 React 模式时,过程式代码与数据驱动代码的区别。
- 函数式:函数式在灵活性和易用性上有人造劣势,且无副作用的个性也利于了解逻辑与编译优化。
- 组合:即利用函数式这个个性,举荐利用已有函数组合成新性能,而不是将比方 Sort、Filter 等性能在每个组件上反复实现或者反复配置一遍。
- 强类型:类型对可维护性至关重要,再弱小的低代码语言,如果没有类型反对,都不能称为易上手。
- 类型推理:能够主动推断类型。这个和强类型一样,有点 TS 的感觉,次要不便书写简洁代码。
- 不举荐面向对象:既然举荐了函数式,当然不举荐面向对象了。
- 可推展:开发者要领有拓展函数与组件的能力,还要反对通过 Javascript 来拓展。
- 对开发人员敌对:这门语言还要在与后面准则不抵触的状况下,尽量对开发人员敌对。
- 语言的迭代:即当语法变更时,要帮忙用户平滑迁徙,毕竟这门语言间接面向普通用户而非专业开发者。Power Fx 提供了这个能力,对每个文档进行版本标记,并在降级后,通过“兼容转换器”主动将老语法降级为新语法。
- 无 undefined 值:为了简化语言带来的了解老本,移除了 undefined 值这个特定。
所以,基于这些思考的 Power Fx 设计进去是这样的:
- 实时性
即无论任何 UI 或语法错误,都不会阻塞其它失常节点的工作,同时代码成果与错误信息实时反馈。这保障了在画布利用编写逻辑的良好体验,因为自身画布利用就是实时的,低代码能力自身也要与画布实时性浑然一体。
<img width=500 src=”https://z3.ax1x.com/2021/09/25/4sqx1g.gif”>
- 低代码特色
即任何 UI 组件都不须要形容相似 onChange
之类的回调,它们只有申明应用的变量,当这些变量变动时,程序会主动、异步、按需的更新应用到的组件。
- 与无代码联合
所谓无代码,就是通过 UI 表单可视化的对画布利用进行配置。
与无代码的联合形式是,任意属性都能够用低代码,即表达式编写,但也提供了 UI 表单供编辑,其中 UI 表单编辑后,能够用低代码二次加工,而用低代码编辑的属性,表单就无奈编辑了,此时点击表单编辑会跳转到低代码编辑框。
精读
创立一门不必学习就能上手的编程语言,须要足够简略,即从用户角度来了解事物:比方用户不晓得回调函数等概念,那就屏蔽所谓的回调函数概念,让一切都是表达式。
这些表达式看起来很简略,也合乎直觉,并且会主动驱动 UI 重绘,即申明式编程。
上面咱们来探讨几个有意思的点:
为什么不必 Js
大部分画布利用都是指 Web 利用了,即使是 Excel,当初也早已转型到 Web Excel,就微软来说,早早转型到 Office Online 就能看进去。
然而 Js 是浏览器内置反对的脚本语言,且上手老本也比拟低,其实很多低代码平台内置的编程语言就是 Js,其益处是实现成本低(沙箱甚至 new function
),而 Power Fx 在浏览器平台最终也要转换为 Js 执行,费这么大劲发明一门新语言,无非是感觉 Js 不够“零门槛”。
首先第一点是不合乎 Excel 表达式标准,咱们不要忘了 Power Fx 也是有小心机的,它想利用 Excel 生态扩充用户群,所以第一目标是兼容 Excel 语法。比方 Excel 应用 & 链接字符串,而 Js 应用 + 连贯,尽管我感觉显然 + 号更天然,但微软感觉还是要合乎 Excel 用户习惯。说实话在这一点上,撇开 Excel 的语法,我很难看出为什么 & 连贯字符串就“更易上手”,而 + 连贯字符串“更适宜程序员应用”。
但有些是认可的,比方移除了 undefined 值,的确让语言更好了解。
兴许将来 Power Fx 会更进一步,引入类 SQL 描述性的语法,像写自然语言一样编程,在这种水平上,配合强类型提醒,在特定场景会比 Js 更好用。
提供内置函数
Js 提供了大量内置函数,这仿佛不是 Power Fx 的专利,但 Power Fx 提供了许多 UI 级别的函数,这可比 Js 点到为止的 alert
强多了。
Power Fx 提供了 Confirm、Notify 用于弹出提醒窗供用户输出,并且就算要造成逻辑,也只须要简直一行代码:
If(Confirm( "Are you sure?", {Title: "Delete Confirmation"} ), Remove(ThisItem) )
能够看到,这里充斥着异步操作:
- 期待用户输出。
- 删除元素。
但这些内置函数间的组合将异步成果转换为同步写法,这大大降低开发成本。
另一类内置函数则封装了业务属性,比方 User
能够获取以后用户信息。原本获取用户信息就须要代码开发,但低代码平台自身就实现了全套账号体系,因而低代码平台能够间接提供如 User().Email
函数拜访以后用户的邮箱地址。
还有诸如 Reset
函数,能够重制控件为默认值,比方 Reset(TextInput1)
,这其实是把平台提供的所有下层能力形象成低代码函数供用户调用,这样用户只有付出一点点学习老本,就能够取得比简略 UI 弱小的多的利用编辑能力,这十分值得咱们学习。
更多公式函数能够参考 文档。
提供对表的操作
对表的操作 让利用数据管理能够和 Excel 同一概念来对待了,这个对立形式就是,把数据抽象成表。Power Fx 提供了系列函数用于表处理:
AddColumns(Filter( Products, 'Quantity Requested' > 'Quantity Available'),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)
这些函数能够跨语言操作 Excel、Sql Server 等数据源的数据,学习老本与 SQL 相似,其实到这一步,对低代码用户的要求也不低,至多和纯熟应用计算公式的 Excel 使用者相当。
总结
UI 编辑能力局限但易上手,代码能力最强但难上手,Power Fx 给咱们提供了一种折中计划,即提供一种“高度封装的简化代码”供用户应用。
纵观其它低代码平台,也有一类采纳了另一种折中计划,即超强的简单编辑 UI,登峰造极的产物便是逻辑编排,这个方向在特定畛域也是不错的抉择,参考:精读《低代码逻辑编排》。
探讨地址是:精读《Microsoft Power Fx》· Issue #355 · dt-fe/weekly
如果你想参加探讨,请 点击这里,每周都有新的主题,周末或周一公布。前端精读 – 帮你筛选靠谱的内容。
关注 前端精读微信公众号
<img width=200 src=”https://img.alicdn.com/tfs/TB165W0MCzqK1RjSZFLXXcn2XXa-258-258.jpg”>
版权申明:自在转载 - 非商用 - 非衍生 - 放弃署名(创意共享 3.0 许可证)