Power Fx 是將在 Microsoft Power Platform 中使用的低程式碼語言。 這是一種通用、強型別、聲明性和函數式程式設計語言。
Power Fx 會以人性化的文字表示。 這是一種低程式碼語言,製作者可以直接在類似 Excel 的公式列或 Visual Studio Code 文字視窗中使用。 低階代碼中的「低階」是由於該語言的簡潔性和簡單性,使得製造商和開發人員都可以輕鬆執行常見的編程任務。 它包含全方位的開發範圍,從為未編寫過程式的人設計的「無程式碼」,到經驗豐富的專業人士使用的「專業程式碼」皆有支援,省下學習或重寫的麻煩,使不同的團隊可以協作並節省時間和費用。
注意
Microsoft Power Fx 是 Power Apps 中的畫布應用程式公式語言的新名稱。 當我們從畫布應用程式中擷取語言,將其與其他 Microsoft Power Platform 產品整合並打造開放原始碼時,本概述及相關內容文章仍會持續進行。 若要深入了解並體驗現今的語言,請從 Power Apps 文件中的開始使用畫布應用程式中的公式,並註冊免費 Power Apps 試用版。
這些問題激發了 Power Apps 和 Power Fx 的建立。 每天有數億人使用 Excel 建立工作表;讓我們為他們帶來簡單易用的應用程式創作,並使用他們已知的 Excel 概念。 透過將 Power Fx 從 Power Apps 中分離出來,我們將找到這些問題的解答,讓您能建立自動化、虛擬助理或其他網域。
所有的程式設計語言 (包括 Power Fx) 都有運算式:一種表示數字、字串或其他資料類型的計算方式。 例如,大多數語言中的 mass * acceleration 代表 mass 和 acceleration 的乘積。 運算式的結果可以放在變數中,作為程序參數使用,也可以嵌入更大的運算式中。
Power Fx 則更進一步。 運算式本身並沒有說明計算的內容。 由製作者決定將其放置在變數中或將其傳遞給函數。 在 Power Fx 中,您不是只編寫沒有特定含義的運算式,而是編寫一個公式將運算式繫結到識別碼。 您會編寫 force = mass * acceleration 作為計算 force 的公式。 mass 或 acceleration 變更後,force 將會自動更新至新的數值。 運算式描述了一個計算過程,公式給出了該計算的名稱並將其用作配方。 這就是我們將 Power Fx 稱為公式語言的原因。
Display names and localization: First Name 在公式中使用 Power Fx ,而 nwind_firstname 在 JavaScript 等效項中使用。 Microsoft Dataverse 和 SharePoint 中,除了唯一的邏輯名稱外,還有資料行和資料表的顯示名稱。 在這種情況下,顯示名稱通常更加適合使用者,但是它們還有另一個重要的特質,就是它們可以本地化。 如果您有使用多種語言的團隊,則每個團隊成員都可以使用自己的語言查看資料表和欄位名稱。 在所有使用案例中,Power Fx 會確保將正確的邏輯名稱自動傳送至資料庫。
無程式碼
您不需要讀取和寫入 Power Fx,就可以開始表達邏輯。 有許多可通過簡單的開關和 UI 建構器表達的自訂和邏輯。 這些無程式碼工具旨在讀取和寫入 Power Fx,以確保有足夠的空餘空間供其他人進一步使用,同時也會確認無程式碼工具永遠無法提供完整語言的所有表達能力。 即使與無程式碼產生器一起使用,公式列也位於 Power Apps 的前端和中心位置,以向製作者說明正在代表他們進行的工作,以便他們可以開始學習 Power Fx。
這些只是簡單範例。 我們認為 Power Fx 是描述無程式碼互動的絕佳語言。 它簡明、功能強大且易於解析,並提供了經常需要的淨空,包括低程式碼的「無障礙」。
專業程式碼
低階代碼製作者有時會建構需要專家幫助或由專業開發人員接管的成品,以進行維護和增強。 專業人員還認識到,與建構專業工具相比,低程式碼開發可以更輕鬆,更快速且成本更低。 並非每種情況都需要 Visual Studio 的全部功能。
專業人士會希望使用專業工具來提高生產力。 Power Fx 公式可以儲存在 YAML 資源檔案中,可以輕鬆地使用 Visual Studio Code、Visual Studio 或任何其他文字編輯器進行編輯,並將 Power Fx 置於資源控制項下方,使用 GitHub、Azure DevOps 或任何其他資源代碼控制系統。
Power Fx 支援公式型元件進行共用和重複使用。 我們宣布支持元件屬性的參數,進而建立純使用者定義的函數,並在此過程中進行更多增強。
此外,Power Fx 也非常適合用於將專業人員所建立的元件和服務彙集在一起。 現成的連接器提供對數百個資料來源和 Web 服務的存取權,自訂連接器可讓 Power Fx 與任何 REST Web 服務對話,而程式碼元件可讓 Power Fx 與畫面和頁面上的完全自訂 JavaScript 互動。
設計原則
簡單
Power Fx 旨在針對未受過開發人員訓練的製作者對象。 只要有可能,我們就會使用該受眾已經知道或可以迅速了解的知識。 成功所需的概念數量保持在最低限度。
Excel 不是物件導向,Power Fx 也不是。 例如,在某些語言中,字串的長度表示為字串的屬性,例如 JavaScript 中的 "Hello World".length。 Excel 和 Power Fx 而是用 Len( "Hello World" ) 的功能來表達這一點。
具有屬性和方法的元件是物件導向的,Power Fx 可輕鬆使用它們。 但是在可能的情況下,我們更喜歡一種功能性方法。
可延伸
製作者可以使用 Power Fx 來建立他們的元件和功能。 開發人員可以透過編寫 JavaScript 來建立元件和功能。
適合開發人員
儘管製作商是我們的主要目標,但我們會盡可能地做到對開發人員友好。 如果它與前面描述的設計原則不衝突,那麼我們將以開發人員偏好的方式來作業。 例如,Excel 沒有新增註釋的功能,因此我們會使用類似 C 的行和行內註釋。
語言革命
不斷進步的程式設計語言既必要又棘手。 無論目的為何,所有人都擔心變更可能會破壞現有程式碼,並要求使用者學習新的模式。 Power Fx 非常重視回溯相容性,但我們也相信我們無法第一次就面面俱到,我們將以社群的形式進行集體學習。 我們必須進化,Power Fx 一開始的設計就支援語言進化。
每個已儲存的 Power Fx 文件都包含一個語言版本戳記。 如果要進行不相容的變更,我們將編寫所謂的「回溯相容性轉換器」,該轉換器在下次編輯公式時會自動重寫該公式。 如果更改是我們需要指導使用者的主要內容,我們也將顯示一則訊息,其中包含導向文件的連結。使用此功能,就算未來有所變更,我們仍然可以載入使用多年前使用 Power Apps 預覽版建構的應用程式。