當前位置: 華文頭條 > 推薦

開源啦!阿裏低程式碼引擎13.7k star,提高工作效率和智能化水平

2024-03-18推薦

低程式碼引擎是一種軟件開發平台,允許開發者透過圖形化使用者介面和配置而非傳統的電腦編程來建立應用程式。它簡化了應用程式開發過程,使非技術背景的人員也能參與其中,提高了開發效率並降低了成本。

一 什麽是低程式碼?

零程式碼、低程式碼的概念在整個全球行業內已經流行了很長一段時間。通常意義上的低程式碼定義會有三個關鍵點:

  1. 一個用於生產軟件的視覺化編輯器
  2. 中間包含了一些用於組裝的物料,可以透過編排、組合和配置它們以生成豐富的功能或表現
  3. 最後的實施結果是成本降低

通常情況下低程式碼平台會具備以下的幾個能力:

  • 視覺化頁面搭建 ,透過簡單的拖拽完成套用頁面開發,對前端技能沒有要求或不需要特別專業的了解;
  • 視覺化模型設計 ,與業務相關的數據儲存變得更容易理解,甚至大多數簡單場景可以做到表單即模型,模型欄位的類別更加業務化;
  • 視覺化流程設計 ,不管是業務流程還是審批流程,都可以透過簡單的點線連線來進行配置;
  • 視覺化報表及數據分析 ,BI 數據分析能力成為標配,隨時隨地透過拖拽選擇來定義自訂分析報表;
  • 視覺化服務與數據開放、整合 ,具備與其他系統互聯互通的配置;
  • 許可權、角色設定標準化和業務化 ,透過策略規則配置來將數據、操作的許可權進行精細化管理;
  • 無需關心伺服器、數據庫等底層運維、計算設施器材、網絡等等復雜技術概念 ,具備安全、效能的統一解決方案,開發者只需要專註於業務本身;
  • 軟件開發演進階段可總結為如下圖所示:

    相較於傳統的純程式碼模式,低程式碼有如下優勢:

    二 低程式碼產品發展及現狀

    低程式碼概念於2014年由Forrester首次正式提出,低程式碼產品由此開始了蓬勃發展。阿裏在2016年宜達專案立項,隨後釋出雲釘一體戰略,之後宜達低程式碼平台對外釋出。

    低程式碼產品國內外廠商大體如下:

    在國內,行業競爭趨勢逐漸明朗,以BAT為代表的大廠都推出了各自的低程式碼產品:

    三 什麽是低程式碼引擎?

    低程式碼引擎是一款為低程式碼平台開發者提供的,具備強大客製擴充套件能力的低程式碼設計器研發框架。

    下面簡單描述定義中的子部份:

    低程式碼設計器 現如今低程式碼平台越來越多,而每一個低程式碼平台中都會有的一個能力就是搭建和配置頁面、模組的頁面,這個頁面我們稱為設計器。例如,下圖是中後台低程式碼平台的設計器。

    設計器承載著低程式碼平台的核心功能,包括入料、編排、元件配置、畫布渲染等等。由於其功能多,打磨精細難,也是低程式碼平台建設最耗時的地方。

    客製擴充套件能力

    什麽是擴充套件能力呢,一方面我們可以快速擁有一份標準的低程式碼設計器,另外一方面如果有業務獨特的功能需要,我們可以不用看它的源碼、不用關心其實作,可以使用 API、外掛程式等方式快速完成能力的開發。 而低程式碼引擎對於設計器的擴充套件能力支持基本上覆蓋了低程式碼設計器的所有功能點。下圖是針對標準的設計器提供了擴充套件功能的區域。

    低程式碼設計器研發框架

    低程式碼引擎的核心是設計器,透過擴充套件、周邊生態等可以產出各式各樣的設計器。它不是一套可以適合所有人的低程式碼平台,而是幫助低程式碼平台的開發者,快速生產低程式碼平台的工具。

    四 低程式碼解決方案選型

    幫助使用者根據個人或企業需求選擇合適的低程式碼產品。

    特性/產品

    低程式碼引擎

    Lab平台

    UIPaaS

    適用使用者

    前端開發者

    需要快速搭建套用/頁面的使用者

    企業使用者,需要大規模部署低程式碼解決方案的組織

    產品特點

    設計器研發框架,適合客製開發

    低程式碼平台, 視覺化操作界面,易於上手

    低程式碼平台孵化器,企業級功能

    使用場景

    客製和開發低程式碼平台的設計器部份

    透過視覺化, 快速開發套用或頁面

    幫助具有一定規模軟件研發團隊的的企業低成本客製低程式碼平台

    產品關系

    開源產品

    基於UIPaaS技術實作, 展示了UIPaaS的部份能力

    提供完整的低程式碼平台解決方案,商業產品

    收費情況

    免費

    可免費使用(有額度限制),不提供私有化部署售賣

    僅提供私有化部署售賣

    官方網站

    低程式碼引擎官網

    Lab平台官網

    UIPaaS官網

    五 阿裏低程式碼架構概述

    5.1 分層架構描述

    我們設計了這樣一套分層架構,自下而上分別是協定 - 引擎 - 生態 - 平台。

  • 底層協定棧定義的是標準, 標準的統一讓上層產物的互通成為可能
  • 引擎是 對協定的實作 ,同時透過能力的輸出,向上 支撐生態開放體系 ,提供各種生態擴充套件能力。
  • 生態就好理解了,是基於引擎核心能力上擴充套件出來的,比如物料、設定器、外掛程式等,還有工具鏈支撐開發體系。
  • 最後,各個平台基於引擎內核以及生態中的產品組合、銜接形成滿足其需求的低程式碼平台。
  • 每一層都明確自身的定位,各司其職,協定不會去思考引擎如何實作,引擎也不會實作具體上層平台功能,上層平台的客製化均透過外掛程式來實作,這些理念將會貫穿我們體系設計、實作的過程。

    5.2 引擎內核簡述

    低程式碼引擎分為 4 大模組,入料 - 編排 - 渲染 - 出碼:

  • 入料模組就是將外部的物料,比如海量的 npm 元件,按照 【低程式碼引擎物料協定規範】進行描述。將描述後的數據透過引擎 API 註冊後,在編輯器中使用。 註意,這裏僅是增加描述,而非重寫一套,這樣我們能最大程度復用 ProCode 體系已沈澱的元件。
  • 編排,本質上來講,就是 不斷在生成符合 【低程式碼引擎搭建協定規範】 的頁面描述,將編輯器中的所有物料,進行布局設定、元件 CRUD 操作、以及 JS / CSS 編寫/ 邏輯編排 等,最終轉換成頁面描述,技術細節後文會展開。
  • 渲染,顧名思義,就是 將編排生成的頁面描述結構渲染成檢視的過程 ,檢視是面向使用者的,所以必須處理好內部數據流、生命周期、事件繫結、國際化等。
  • 出碼,就是 將編排過程產生的符合 【低程式碼引擎搭建協定規範】 的頁面描述轉換成另一種 DSL 或 程式語言程式碼的過程
  • 5.3 引擎生態簡述

    引擎生態主要分為 3 部份,物料、設定器和外掛程式。

    5.3.1 物料生態

    物料是低程式碼平台的生產資料,沒有物料低程式碼平台則變成了無源之水無本之木。低程式碼平台的物料即低程式碼元件。因此低程式碼物料生態指的是:

    1. 低程式碼物料生產能力和規範。
    2. 對低程式碼物料進行統一管理的物料中心。
    3. 基於 Fusion Next 的低程式碼基礎元件庫。

    5.3.2 設定器生態

    對於已接入物料的內容配置,需要不同的設定器。

    比如配置數值類別的 age,需要一個數值設定器,配置物件類別的 hobby,需要一個物件設定器,依次類推。

    每個設定器本質上都是一個 React 元件,接受由引擎傳入的參數,比如 value 和 onChange,value 是初始傳入的值,onChange 是在設定器的值變化時的回傳函數,將值寫回到引擎中。

    // 一個最簡單的文本設定器範例 class TextSetter extends Component { render() { const { value, onChange } = this.props; return <input value={value} onChange={(e) => onChange(e.target.value)} />; }}

    大多陣列件所使用的設定器都是一致或相似的。如同建設低程式碼基礎元件庫一樣,設定器生態是一組基礎的設定器,供大多陣列件配置場景使用。

    同時提供了設定器的客製功能。

    5.3.3 外掛程式生態

    低程式碼引擎本身只包含了最小的內核,而我們所能看到的設計器上的按鈕、面板等都是外掛程式提供的。外掛程式是組成設計器的必要部份。

    因此我們提供了一套官方的外掛程式生態,提供最基礎的設計器功能。幫助使用者透過使用外掛程式,快速完成自己的設計器。

    六 參考資料

    1. github源碼:https://github.com/alibaba/lowcode-engine
    2. 低程式碼引擎:https://lowcode-engine.cn/site/docs/guide/quickStart/intro
    3. 低程式碼引擎技術白皮書:https://developer.aliyun.com/ebook/7507/38517?spm=a2c6h.26392459.ebook-detail.4.5ade49991qgJZQ