低程式碼引擎是一種軟體開發平台,允許開發者透過圖形化使用者介面和配置而非傳統的電腦編程來建立應用程式。它簡化了應用程式開發過程,使非技術背景的人員也能參與其中,提高了開發效率並降低了成本。
一 什麽是低程式碼?
零程式碼、低程式碼的概念在整個全球行業內已經流行了很長一段時間。通常意義上的低程式碼定義會有三個關鍵點:
- 一個用於生產軟體的視覺化編輯器
- 中間包含了一些用於組裝的物料,可以透過編排、組合和配置它們以生成豐富的功能或表現
- 最後的實施結果是成本降低
通常情況下低程式碼平台會具備以下的幾個能力:
軟體開發演進階段可總結為如下圖所示:
相較於傳統的純程式碼模式,低程式碼有如下優勢:
二 低程式碼產品發展及現狀
低程式碼概念於2014年由Forrester首次正式提出,低程式碼產品由此開始了蓬勃發展。阿裏在2016年宜達計畫立項,隨後釋出雲釘一體戰略,之後宜達低程式碼平台對外釋出。
低程式碼產品國內外廠商大體如下:
在國內,行業競爭趨勢逐漸明朗,以BAT為代表的大廠都推出了各自的低程式碼產品:
三 什麽是低程式碼引擎?
低程式碼引擎是一款為低程式碼平台開發者提供的,具備強大客製擴充套件能力的低程式碼設計器研發框架。
下面簡單描述定義中的子部份:
低程式碼設計器 現如今低程式碼平台越來越多,而每一個低程式碼平台中都會有的一個能力就是搭建和配置頁面、模組的頁面,這個頁面我們稱為設計器。例如,下圖是中後台低程式碼平台的設計器。
設計器承載著低程式碼平台的核心功能,包括入料、編排、元件配置、畫布渲染等等。由於其功能多,打磨精細難,也是低程式碼平台建設最耗時的地方。
客製擴充套件能力
什麽是擴充套件能力呢,一方面我們可以快速擁有一份標準的低程式碼設計器,另外一方面如果有業務獨特的功能需要,我們可以不用看它的源碼、不用關心其實作,可以使用 API、外掛程式等方式快速完成能力的開發。 而低程式碼引擎對於設計器的擴充套件能力支持基本上覆蓋了低程式碼設計器的所有功能點。下圖是針對標準的設計器提供了擴充套件功能的區域。
低程式碼設計器研發框架
低程式碼引擎的核心是設計器,透過擴充套件、周邊生態等可以產出各式各樣的設計器。它不是一套可以適合所有人的低程式碼平台,而是幫助低程式碼平台的開發者,快速生產低程式碼平台的工具。
四 低程式碼解決方案選型
幫助使用者根據個人或企業需求選擇合適的低程式碼產品。
特性/產品 |
低程式碼引擎 |
Lab平台 |
UIPaaS |
適用使用者 |
前端開發者 |
需要快速搭建套用/頁面的使用者 |
企業使用者,需要大規模部署低程式碼解決方案的組織 |
產品特點 |
設計器研發框架,適合客製開發 |
低程式碼平台, 視覺化操作界面,易於上手 |
低程式碼平台孵化器,企業級功能 |
使用場景 |
客製和開發低程式碼平台的設計器部份 |
透過視覺化, 快速開發套用或頁面 |
幫助具有一定規模軟體研發團隊的的企業低成本客製低程式碼平台 |
產品關系 |
開源產品 |
基於UIPaaS技術實作, 展示了UIPaaS的部份能力 |
提供完整的低程式碼平台解決方案,商業產品 |
收費情況 |
免費 |
可免費使用(有額度限制),不提供私有化部署售賣 |
僅提供私有化部署售賣 |
官方網站 |
低程式碼引擎官網 |
Lab平台官網 |
UIPaaS官網 |
五 阿裏低程式碼架構概述
5.1 分層架構描述
我們設計了這樣一套分層架構,自下而上分別是協定 - 引擎 - 生態 - 平台。
每一層都明確自身的定位,各司其職,協定不會去思考引擎如何實作,引擎也不會實作具體上層平台功能,上層平台的客製化均透過外掛程式來實作,這些理念將會貫穿我們體系設計、實作的過程。
5.2 引擎內核簡述
低程式碼引擎分為 4 大模組,入料 - 編排 - 渲染 - 出碼:
5.3 引擎生態簡述
引擎生態主要分為 3 部份,物料、設定器和外掛程式。
5.3.1 物料生態
物料是低程式碼平台的生產資料,沒有物料低程式碼平台則變成了無源之水無本之木。低程式碼平台的物料即低程式碼元件。因此低程式碼物料生態指的是:
- 低程式碼物料生產能力和規範。
- 對低程式碼物料進行統一管理的物料中心。
- 基於 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 外掛程式生態
低程式碼引擎本身只包含了最小的內核,而我們所能看到的設計器上的按鈕、面板等都是外掛程式提供的。外掛程式是組成設計器的必要部份。
因此我們提供了一套官方的外掛程式生態,提供最基礎的設計器功能。幫助使用者透過使用外掛程式,快速完成自己的設計器。
六 參考資料
- github源碼:https://github.com/alibaba/lowcode-engine
- 低程式碼引擎:https://lowcode-engine.cn/site/docs/guide/quickStart/intro
- 低程式碼引擎技術白皮書:https://developer.aliyun.com/ebook/7507/38517?spm=a2c6h.26392459.ebook-detail.4.5ade49991qgJZQ