Power FX是电源平台的低代码语言。最初仅用于Canvas Power应用程序,它是一种基于表达的语言,其学习曲线集中在Excel用户上。 Microsoft已从私人虚拟代理和Dataverse开始,将其扩展到平台的其他领域。
。那么,为什么Procode开发人员想学习它,因为看起来该语言将继续开发和扩展微软的技术套件,因此很有可能会出现在我们的Workstream中。
以及为什么Power App开发人员要学习JavaScript,良好的脚本组件使用JavaScript和Office脚本使用Typescript(JavaScript的子集)。因此,学习JavaScript是一个逻辑进步。
Fizz Buss是一个非常简单的编码练习,采用多种不同的方法来提供相同的解决方案,我认为这将是Power FX和JavaScript的差异和相似之处的很好的证明。
好吧,什么是嘶嘶声:
Fizz Buzz是一个小组文字游戏,供儿童教他们有关分裂的信息。玩家轮流逐步计数,替换了用“ fizz”一词排除的任何数字,而用“ buzz”一词排除的任何数字都可以排除在5个单词,任何数字都可以用3和5的任何数字用“ fizzbuzz”。<<<<<<<<<<<<<。 /p>
因此要求是:
- 通过一个增量
- 如果增量可以除以5印刷'fizz'
- 如果增量可以除以3打印'嗡嗡声'
- 每个增量应在Sameline上
简单ð
对于JavaScript,我会做
function fizzBuzz(){
const iEnd=100
for(i=1;i<iEnd;i++){
let sPrint="";
if(i % 3==0){sPrint="fizz"};
if(i % 5==0){sPrint+="buzz"};
if(sPrint!=""){console.log(sPrint)};
//console.log(i+"-"+sPrint); use instead above for demo below
}
}
有2个小问题用于FX比较,Power FX需要触发,并且没有控制台,因此必须在某个地方进行更新。
我们必须将功能更改为单击事件:
document.getElementById('yourTriggerButton').addEventListener('click', function(){}
,我们用
替换了console.log
document.getElementById('yourOutput').innerHTML=sPrintAll;
由于我们现在覆盖不添加到我们必须存储以前的行,添加新行,然后写入页面。
,看起来会像这样。
document.getElementById('yourTriggerButton').addEventListener('click', function() {
const iEnd=100
let sPrintAll="";
for(i=1;i<iEnd;i++){
let sPrint="";
let bNewLine=false;
if(i % 3==0){
sPrint="fizz";
bNewLine=true
};
if(i % 5==0){
sPrint+="buzz";
bNewLine=true;
};
if(bNewLine){sPrint+="<br>"};
sPrintAll+=sPrint;
document.getElementById('yourOutput').innerHTML=sPrintAll;
}
});
在Power FX中,它将是:
//Label Component Text set to sPrint
Collect(arrayI,Sequence(100));
Set(sPrintAll,"");
ForAll(arrayI,
Set(bNewLine,false);
Set(sPrint,"");
If(Mod(Value,3)=0,
Set(sPrint,"Fizz");
Set(bNewLine,true);
);
If(Mod(Value,5)=0,
Set(sPrint,sPrint&"Buzz");
Set(bNewLine,true);
);
If(bNewLine,Set(sPrint,sPrint&Char(10)));
Set(sPrintAll,sPrintAll&sPrint);
)
好吧,不,这是错误的,Forall仅用于修改数据,它完全范围范围范围内。
。目前不可能在Power FX上进行任何循环(是的,它更像Excel,而不是JavaScript)。要在Power FX中进行循环,您必须利用Canvas应用中的计时器组件。参数需要:
ontimerstart:
Set(bNewLine,false);
Set(i,i+1);
Set(sPrint,"");
If(Mod(i,3)=0,
Set(sPrint,"Fizz");
Set(bNewLine,true);
);
If(Mod(i,5)=0,
Set(sPrint,sPrint&"Buzz");
Set(bNewLine,true);
);
If(bNewLine,Set(sPrint,sPrint&Char(10)));
//Set(sPrint,i&"-"&sPrint&Char(10)); as shown in demo video
Set(sPrintAll,sPrintAll&sPrint);
If(i>=100,Set(bStart,false)
重复:bStart
持续时间:10
start:bStart
-通过开始按钮设置为true
标签组件文本:sPrint
不幸的是,这意味着我们现在不与我们编写的JavaScript代码保持一致,因为我们在JavaScript中具有相当的计时器。
我们将代码从for循环内部移动到内部setInterval,这几乎与计时器组件
相同
const timer=setInterval(function(){ },10)
为了停止计时器,我们使用
clearInterval(timer)
document.getElementById('yourTriggerButton').addEventListener('click', function() {
let i=1;
let sPrintAll="";
const timer=setInterval(function(){
let sPrint="";
let bNewLine=false;
if(i % 3==0){
sPrint="fizz";
bNewLine=true
};
if(i % 5==0){
sPrint+="buzz";
bNewLine=true;
};
if(bNewLine){sPrint+="<br>"};
sPrintAll+=sPrint;
document.getElementById('yourOutput').innerHTML=sPrintAll;
i++;
if(i==100){clearInterval(timer)}
}, 10);
});
尽管语法与众不同,但它们之间的更大挑战是结构的差异。像大多数低代码一样,Power FX都依赖于预制组件。然后将代码放在顶部。 JavaScript,特定于库的特定内容是相同的,但是将组件放在代码的顶部。 JavaScript允许您在存在差距并具有两全其美的情况下构建自己的构建,这对于Microsoft允许您在JavaScript中构建自定义组件的原因很有意义。
有趣的呼唤我发现了,尽管“低代码”通常被认为是较少的代码,但不一定是。当类似的时候,通常是这样的,但是通常可以在Procode中找到更直接/更短的解决方案。
解决方案 | 线数 |
---|---|
javascript | 7 |
Power FX | 12 |
javascript喜欢 | 18 |
我经常将其视为二进制文件,因为它只有2个值,它可以被认为是简单的,但是简单性使复杂性呈指数增长,等于更长的代码,例如99在二进制中是1100011。
注意:
- 电源应用程序中的本地变量被示为屏幕上,JavaScript是函数范围
- Power FX也可以使用'!”不等于,'&&'for and'||'对于或
fureter读取