OneCode低代碼引擎技術(shù)揭秘(四)后端集成開發(fā)方案(低代碼前端開發(fā)平臺)
前言
在剛剛過去的2022年,在平臺互聯(lián)互通的方面,阿里在第二季度推出開源引擎 “LowCodeEngin”,國家隊信通院也應(yīng)市場需求在第四季度推出了《低代碼開發(fā)平臺通用技術(shù)要求》,針對低代碼相關(guān)概念以及功能點新型了進一步的規(guī)范和梳理。進入到2023年的第一個季度隨著ChatGPT的強勢開局更是將以“全民開發(fā)”為宗旨的低代碼零代碼開發(fā)強勢推向了普通公眾的面前。
一個全新的“低碼時代”呼之欲出,但這一切對于正處在風(fēng)口浪尖上的傳統(tǒng)軟件行業(yè)而言卻無疑是一種煎熬。更換賽道追跑“低代碼”對于長期以業(yè)務(wù)定制開發(fā)為主導(dǎo)的中小型行業(yè)軟件公司而言,其薄弱的技術(shù)積累成為了自主研發(fā)最大的屏障。集成和開源二次開發(fā)成為了傳統(tǒng)軟件行業(yè)緊跟時代的唯一選擇,低代碼領(lǐng)域開源領(lǐng)域雖然不乏類似于阿里“LowCodeEngin”百度“amis”等一些優(yōu)秀開源框架,但多數(shù)更多的側(cè)重在純前端展現(xiàn),而這些前端技術(shù)本身在學(xué)習(xí)難度以及其冗長的工具鏈條使得其集成和嵌入變得極其復(fù)雜。
在這樣的背景下,CodeBee面向軟件開發(fā)團隊推出了基于OneCode的集成開發(fā)方案。本文主要針對OneCode 的開發(fā)編譯原理以及基礎(chǔ)工具使用做說明。在后續(xù)的章節(jié)中將根據(jù)具體的示例以及部署管理等多個方面展開描述。
一,OneCode技術(shù)原理及系統(tǒng)組成
OneCode由三塊自成體系的可獨立部署運行的部分組成。前端引擎負(fù)責(zé)界面建模并按低代碼協(xié)議協(xié)議生成標(biāo)準(zhǔn)JSON,中后臺OneCode通過讀取標(biāo)準(zhǔn)JSON協(xié)議,完成后端的視圖建模,合并DSM后端服務(wù)建模系統(tǒng),完成完整的后端服務(wù)建模應(yīng)用,通過代碼工程完成前后端一體的出碼應(yīng)用。JDSCloud是OneCode的協(xié)同支撐系統(tǒng),除了常規(guī)的資源代碼空間管理外,提供了獨立的沙箱運行環(huán)境。為OneCode 提供工程化的仿真版本Ops等服務(wù)。
二,OneCode開發(fā)模式
(1)CodeFrist 模式(代碼優(yōu)先)
OneCode 本身基于Java語言體系,是在Java Spring 注解基礎(chǔ)上的一套擴展子集,混合編譯引擎器通過擴展注解構(gòu)建完整的Domain模型,通過讀取標(biāo)準(zhǔn)Spring 注解完成普通Web數(shù)據(jù)交付及調(diào)度過程,通過Domain域模型動態(tài)渲染JS文件輸出為JSON交付給前端引擎構(gòu)建頁面。
OneCode代碼編譯原理
通用列表示例
表單示例
在開源的組織機構(gòu)插件中,采用了完整的OneCode開發(fā)完成,下午截取了一個典型的嵌入指標(biāo)的例子做了一個說明。
真實代碼示例
為方便大家熟悉OneCode 基礎(chǔ)語法,OneCode平臺組件中還內(nèi)置了一款,在線的OneCode代碼編輯器,開發(fā)者可以方便的直接在線編輯編譯OneCode代碼。
OneCode web在線IDE
為方便大家快速上手,OneCode 也提供了,各種簡單模型的代碼模板工具,方便大家初期上手時快速構(gòu)建代碼結(jié)構(gòu)。
在代碼工具中為方便大家不同技術(shù)棧的接入,OneCode 也開放了自定義模板的管理和構(gòu)建功能,方便大家自主進行代碼結(jié)構(gòu)設(shè)計。
業(yè)務(wù)代碼模板
在完成編碼后可以調(diào)用云端的在線編譯功能個,動態(tài)完成代碼編譯,代碼編譯完成后可以下載到本地進行集成也可以在線部署發(fā)布運行。
在線編譯
(2),ViewFrist 視圖優(yōu)先(拖拽優(yōu)先)
通過視圖引擎拖拽完成前期的交互模型,然后選擇服務(wù)端代碼模板進行,出碼來完成基礎(chǔ)代碼以及建模應(yīng)用。
用戶可以通過,拖拽方式
(3),ModuleFrist (模型優(yōu)先)
OneCode除了在前端實現(xiàn)了標(biāo)準(zhǔn)化組件定義外,還額外提供了后端建模的工具DSM,并通過領(lǐng)域模型將二者打通。這樣在前端組件建模時便可以直接調(diào)用后端服務(wù)模型完成數(shù)據(jù)部分API構(gòu)建。而DSM模型工具也可以在后端建模時直接讀取前端組件屬性,打通前端動作與后端服務(wù)的通訊能力。
(4)DSM逆向轉(zhuǎn)換
通過不同方式完成的DSM模型,可以通過OneCode 在視圖、Code 、以及Module 三種方式之間自由切換,利用相關(guān)工具完成仿真調(diào)試以及部署運行。
傳統(tǒng)低代碼平臺基本上都是完全建立在JS的模型下,在初期建模時結(jié)構(gòu)還算清晰但經(jīng)過稍有點復(fù)雜的邏輯,構(gòu)建時代碼的冗余度以及結(jié)構(gòu)就會變得混亂,特別是頁跨頁面操作或者完成前后臺數(shù)據(jù)交互時。由于其腳本語言的特點無法完成實時校驗,只能運行期測試才能發(fā)現(xiàn)問題。采用低代碼構(gòu)建的頁面往往只是由于頁面中做了一些簡單的組件增刪或者屬性樣式就該就會造成不可預(yù)期的結(jié)果,這大大降低了代碼的可維護度。OneCode所構(gòu)建的領(lǐng)域模型則很好的解決了這一問題,在前后端任意模型發(fā)生變化時即可調(diào)用混合編譯,將頁面間的連接關(guān)系以及前后臺的數(shù)據(jù)關(guān)系進行校驗通知。在預(yù)編譯中提升整體的編譯能力。
(5)DSM第三方語言轉(zhuǎn)換
DSM出碼模塊采用了獨立的模板架構(gòu),除了可以以O(shè)neCode形式存在,還可以支持獨立的出碼模塊定制獨立的第三方語言模型輸出。