開源啦!阿里低代碼引擎13.7k star,提高工作效率和智能化水平(阿里低代碼開發(fā)平臺)
低代碼引擎是一種軟件開發(fā)平臺,允許開發(fā)者通過圖形用戶界面和配置而非傳統(tǒng)的計算機編程來創(chuàng)建應用程序。它簡化了應用程序開發(fā)過程,使非技術背景的人員也能參與其中,提高了開發(fā)效率并降低了成本。
一 什么是低代碼?
零代碼、低代碼的概念在整個全球行業(yè)內(nèi)已經(jīng)流行了很長一段時間。通常意義上的低代碼定義會有三個關鍵點:
- 一個用于生產(chǎn)軟件的可視化編輯器
- 中間包含了一些用于組裝的物料,可以通過編排、組合和配置它們以生成豐富的功能或表現(xiàn)
- 最后的實施結(jié)果是成本降低
通常情況下低代碼平臺會具備以下的幾個能力:
- 可視化頁面搭建,通過簡單的拖拽完成應用頁面開發(fā),對前端技能沒有要求或不需要特別專業(yè)的了解;
- 可視化模型設計,與業(yè)務相關的數(shù)據(jù)存儲變得更容易理解,甚至大多數(shù)簡單場景可以做到表單即模型,模型字段的類型更加業(yè)務化;
- 可視化流程設計,不管是業(yè)務流程還是審批流程,都可以通過簡單的點線連接來進行配置;
- 可視化報表及數(shù)據(jù)分析,BI 數(shù)據(jù)分析能力成為標配,隨時隨地通過拖拽選擇來定義自定義分析報表;
- 可視化服務與數(shù)據(jù)開放、集成,具備與其他系統(tǒng)互聯(lián)互通的配置;
- 權(quán)限、角色設置標準化和業(yè)務化,通過策略規(guī)則配置來將數(shù)據(jù)、操作的權(quán)限進行精細化管理;
- 無需關心服務器、數(shù)據(jù)庫等底層運維、計算設施設備、網(wǎng)絡等等復雜技術概念,具備安全、性能的統(tǒng)一解決方案,開發(fā)者只需要專注于業(yè)務本身;
軟件開發(fā)演進階段可總結(jié)為如下圖所示:
相較于傳統(tǒng)的純代碼模式,低代碼有如下優(yōu)勢:
二 低代碼產(chǎn)品發(fā)展及現(xiàn)狀
低代碼概念于2014年由Forrester首次正式提出,低代碼產(chǎn)品由此開始了蓬勃發(fā)展。阿里在2016年宜達項目立項,隨后發(fā)布云釘一體戰(zhàn)略,之后宜達低代碼平臺對外發(fā)布。
低代碼產(chǎn)品國內(nèi)外廠商大體如下:
在國內(nèi),行業(yè)競爭趨勢逐漸明朗,以BAT為代表的大廠都推出了各自的低代碼產(chǎn)品:
三 什么是低代碼引擎?
低代碼引擎是一款為低代碼平臺開發(fā)者提供的,具備強大定制擴展能力的低代碼設計器研發(fā)框架。
下面簡單描述定義中的子部分:
低代碼設計器 現(xiàn)如今低代碼平臺越來越多,而每一個低代碼平臺中都會有的一個能力就是搭建和配置頁面、模塊的頁面,這個頁面我們稱為設計器。例如,下圖是中后臺低代碼平臺的設計器。
設計器承載著低代碼平臺的核心功能,包括入料、編排、組件配置、畫布渲染等等。由于其功能多,打磨精細難,也是低代碼平臺建設最耗時的地方。
定制擴展能力
什么是擴展能力呢,一方面我們可以快速擁有一份標準的低代碼設計器,另外一方面如果有業(yè)務獨特的功能需要,我們可以不用看它的源碼、不用關心其實現(xiàn),可以使用 API、插件等方式快速完成能力的開發(fā)。 而低代碼引擎對于設計器的擴展能力支持基本上覆蓋了低代碼設計器的所有功能點。下圖是針對標準的設計器提供了擴展功能的區(qū)域。
低代碼設計器研發(fā)框架
低代碼引擎的核心是設計器,通過擴展、周邊生態(tài)等可以產(chǎn)出各式各樣的設計器。它不是一套可以適合所有人的低代碼平臺,而是幫助低代碼平臺的開發(fā)者,快速生產(chǎn)低代碼平臺的工具。
四 低代碼解決方案選型
幫助用戶根據(jù)個人或企業(yè)需求選擇合適的低代碼產(chǎn)品。
特性/產(chǎn)品 | 低代碼引擎 | Lab平臺 | UIPaaS |
適用用戶 | 前端開發(fā)者 | 需要快速搭建應用/頁面的用戶 | 企業(yè)用戶,需要大規(guī)模部署低代碼解決方案的組織 |
產(chǎn)品特點 | 設計器研發(fā)框架,適合定制開發(fā) | 低代碼平臺, 可視化操作界面,易于上手 | 低代碼平臺孵化器,企業(yè)級功能 |
使用場景 | 定制和開發(fā)低代碼平臺的設計器部分 | 通過可視化, 快速開發(fā)應用或頁面 | 幫助具有一定規(guī)模軟件研發(fā)團隊的的企業(yè)低成本定制低代碼平臺 |
產(chǎn)品關系 | 開源產(chǎn)品 | 基于UIPaaS技術實現(xiàn), 展示了UIPaaS的部分能力 | 提供完整的低代碼平臺解決方案,商業(yè)產(chǎn)品 |
收費情況 | 免費 | 可免費使用(有額度限制),不提供私有化部署售賣 | 僅提供私有化部署售賣 |
官方網(wǎng)站 | 低代碼引擎官網(wǎng) | Lab平臺官網(wǎng) | UIPaaS官網(wǎng) |
五 阿里低代碼架構(gòu)概述
5.1 分層架構(gòu)描述
我們設計了這樣一套分層架構(gòu),自下而上分別是協(xié)議 – 引擎 – 生態(tài) – 平臺。
- 底層協(xié)議棧定義的是標準,標準的統(tǒng)一讓上層產(chǎn)物的互通成為可能。
- 引擎是對協(xié)議的實現(xiàn),同時通過能力的輸出,向上支撐生態(tài)開放體系,提供各種生態(tài)擴展能力。
- 生態(tài)就好理解了,是基于引擎核心能力上擴展出來的,比如物料、設置器、插件等,還有工具鏈支撐開發(fā)體系。
- 最后,各個平臺基于引擎內(nèi)核以及生態(tài)中的產(chǎn)品組合、銜接形成滿足其需求的低代碼平臺。
每一層都明確自身的定位,各司其職,協(xié)議不會去思考引擎如何實現(xiàn),引擎也不會實現(xiàn)具體上層平臺功能,上層平臺的定制化均通過插件來實現(xiàn),這些理念將會貫穿我們體系設計、實現(xiàn)的過程。
5.2 引擎內(nèi)核簡述
低代碼引擎分為 4 大模塊,入料 – 編排 – 渲染 – 出碼:
- 入料模塊就是將外部的物料,比如海量的 npm 組件,按照《低代碼引擎物料協(xié)議規(guī)范》進行描述。將描述后的數(shù)據(jù)通過引擎 API 注冊后,在編輯器中使用。注意,這里僅是增加描述,而非重寫一套,這樣我們能最大程度復用 ProCode 體系已沉淀的組件。
- 編排,本質(zhì)上來講,就是不斷在生成符合《低代碼引擎搭建協(xié)議規(guī)范》的頁面描述,將編輯器中的所有物料,進行布局設置、組件 CRUD 操作、以及 JS / CSS 編寫/ 邏輯編排 等,最終轉(zhuǎn)換成頁面描述,技術細節(jié)后文會展開。
- 渲染,顧名思義,就是將編排生成的頁面描述結(jié)構(gòu)渲染成視圖的過程,視圖是面向用戶的,所以必須處理好內(nèi)部數(shù)據(jù)流、生命周期、事件綁定、國際化等。
- 出碼,就是將編排過程產(chǎn)生的符合《低代碼引擎搭建協(xié)議規(guī)范》的頁面描述轉(zhuǎn)換成另一種 DSL 或 編程語言代碼的過程。
5.3 引擎生態(tài)簡述
引擎生態(tài)主要分為 3 部分,物料、設置器和插件。
5.3.1 物料生態(tài)
物料是低代碼平臺的生產(chǎn)資料,沒有物料低代碼平臺則變成了無源之水無本之木。低代碼平臺的物料即低代碼組件。因此低代碼物料生態(tài)指的是:
- 低代碼物料生產(chǎn)能力和規(guī)范。
- 對低代碼物料進行統(tǒng)一管理的物料中心。
- 基于 Fusion Next 的低代碼基礎組件庫。
5.3.2 設置器生態(tài)
對于已接入物料的屬性配置,需要不同的設置器。
比如配置數(shù)值類型的 age,需要一個數(shù)值設置器,配置對象類型的 hobby,需要一個對象設置器,依次類推。
每個設置器本質(zhì)上都是一個 React 組件,接受由引擎?zhèn)魅氲膮?shù),比如 value 和 onChange,value 是初始傳入的值,onChange 是在設置器的值變化時的回傳函數(shù),將值寫回到引擎中。
// 一個最簡單的文本設置器示例class TextSetter extends Component { render() { const { value, onChange } = this.props; return <input value={value} onChange={(e) => onChange(e.target.value)} />; }}
大多數(shù)組件所使用的設置器都是一致或相似的。如同建設低代碼基礎組件庫一樣,設置器生態(tài)是一組基礎的設置器,供大多數(shù)組件配置場景使用。
同時提供了設置器的定制功能。
5.3.3 插件生態(tài)
低代碼引擎本身只包含了最小的內(nèi)核,而我們所能看到的設計器上的按鈕、面板等都是插件提供的。插件是組成設計器的必要部分。
因此我們提供了一套官方的插件生態(tài),提供最基礎的設計器功能。幫助用戶通過使用插件,快速完成自己的設計器。
六 參考資料
- 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