做低代碼引擎有多難?OneCode五個版本歷程心路歷程(低代碼開發(fā)平臺 知乎)
今天有幸跟處于頭部位置的幾家低代碼企業(yè)技術(shù)負責人在聊天,低代碼從最初的一個RAD(單頁模型)到大前端,工程化,再到企業(yè)中臺PAAS應用。直到現(xiàn)在的云原生嵌入式引擎技術(shù),低代碼技術(shù)一直沖在技術(shù)潮流的第一浪頭。
回過頭來看OneCode的經(jīng)歷,五個版本的迭代。
一,V1.0 SPA單頁應用
第一個表單SPA應用
不管是現(xiàn)在大名鼎鼎的React還是國內(nèi)風光一時的VUE,在1.0的哪個時代都在應用同一個概念 “SPA單頁應用程序”。
百度百科對SPA 是這樣定義的:
單頁Web應用(single page web application,SPA),就是只有一張Web頁面的應用。單頁應用程序 (SPA) 是加載單個HTML 頁面并在用戶與應用程序交互時動態(tài)更新該頁面的Web應用程序。
同時還有一個更為大家的熟知的概念 MVVM開發(fā)模式(前后端分離),即前后端各負其責。OneCode 1.0 也出生在這個年代,CodeBee團隊在多年工作流表單設(shè)計器的經(jīng)驗基礎(chǔ)上。廢棄了舊有的ext模板渲染模式,將組件進行全新的SPA模式封裝。同時構(gòu)建了第一批OneCode 前后端一體的組件模型。在原有的技術(shù)體系框架中,逐步替換流程列表,表單應用。
二,V2.0 低代碼引擎雛形,全站拖動計劃
SPA的改造并不是一帆風順的,在改造的過程中,團隊無法適應前后端分離開發(fā),前段組件構(gòu)建的時候靈活度太差無法適應用戶需求等等問題,一次次讓產(chǎn)品的模型在新舊模型間不斷轉(zhuǎn)換,永遠都存在無法消滅的最后一個“模板應用”。但隨著團隊的技術(shù)進步,產(chǎn)品上線后SPA在應用上帶來的新技術(shù)體驗,讓OneCode 1.0逐步的向主流的Vue ,React靠攏。團隊的技術(shù)欲望也不再滿足于自定義表單,列表這樣單一的應用。要支持全??啥ㄖ?,支持全??赏献?,D&D(技術(shù)小伙伴們應該都能看懂)計劃啟動乘風而上。
至此,OneCode在2.0 中實現(xiàn)了第一個基于SPA的D&D,也有了D&D的夢想
三,V3.0 Python,PHP哪個是最好學的語言? 都不是, 是D&D!
OneCode3.0 最是風光,全站D&D,但飛的越高摔得越狠,去年5月份阿里團隊發(fā)布了開源低代引擎“OneCodeEngine”,在開源的社區(qū)里討論最熱鬧的話題之一是如何構(gòu)建一個多頁的應用。阿里官方的小伙伴甚至還專門為這一個話題發(fā)布了兩期視頻專題講解擴展插件開發(fā)。
由一個單頁應用擴展到多頁應用,表面上只是一個存儲文件的API操作。但實質(zhì)上卻是技術(shù)原理上本源上的跳躍,單頁應用時所有應用都在一個環(huán)境內(nèi),可以直接調(diào)用,而相關(guān)的可視化讀取也是靜態(tài)結(jié)構(gòu)。但如果是多頁應用這就會面臨很多的問題,跨頁調(diào)用時可能新的頁面還沒有加載,更無從讀取其函數(shù)列表及對象結(jié)構(gòu),可視化就被無形中中斷。頁面加載上了還必須考慮到新的界面可能由不同的團隊開發(fā)的,在結(jié)構(gòu)上甚至是全局變量命名空間上都會沖突。而將多頁擴展到整個項目工程時,多達幾百個頁面不同的層次的加載關(guān)系。就使得復雜度產(chǎn)生了數(shù)量級的跳躍。
3.0版本開啟多頁工程化應用
OneCode2.0架構(gòu)出現(xiàn)了致命的缺陷, OneCode3.0臨危受命。工程結(jié)構(gòu)樹形結(jié)構(gòu)及系統(tǒng)開發(fā)需求,直接催生了后端的 OneCode-VFS共享存儲體系支撐。多頁面,多層級頁面迫使SPA采用了支持package結(jié)構(gòu)前端類結(jié)構(gòu)體,而頁應用也必須支持獨立而嚴謹?shù)难b載機制。JavaScript單頁環(huán)境這個小魔鬼也被關(guān)在了單頁類結(jié)構(gòu)這個沙箱里,多個SPA終于可以相互照應和平相處了。
四,V4.0 OneCode 超級大前端直面API
3.0是幸運的,整個結(jié)構(gòu)性的創(chuàng)新和變革,使得那個“D&D”產(chǎn)品夢想能夠繼續(xù),開始實戰(zhàn),一個D&D“超級前端”程序員,在項目產(chǎn)品經(jīng)理的領(lǐng)導下,快速而漂亮的完成了前端第一版原型,D&D在豐富組件庫的支持下,初步顯示了其快做,快改,快上的特點。但眼見為實還是無法避免,組件拖動組合的硬傷,界面結(jié)構(gòu)復雜,數(shù)據(jù)應用交互命名錯亂,數(shù)據(jù)結(jié)構(gòu)臃腫缺少體系性結(jié)構(gòu)性的梳理,讓后期才逐步介入的后端團隊差點陷入崩潰的邊緣。
前后端分離,先前端再后端的 view first (視圖優(yōu)先)模式,很快就破產(chǎn)。后端團隊開始了全新的API設(shè)計,在業(yè)務相對定型前端結(jié)構(gòu)初步完成時,后端API設(shè)計,其集約型嚴謹性得到了大幅的提升與之配套的文檔以及測試用例也是應有盡有,后端團隊出色的驗證了code first(代碼優(yōu)先)所特有的模型建設(shè)優(yōu)勢。
皮球成功踢給了這個前端。前后端“顏色的戰(zhàn)爭”拉開了帷幕,接口參數(shù)命名規(guī)范,業(yè)務邏輯調(diào)轉(zhuǎn)調(diào)用順序改變、特有應用前后交互… 在一次次的開會、文檔交互中將兩只大軍陷入了書山會海。
D&D 真的只是夢想嗎?不! CodeBee團隊在困難面前是從來都不會退縮,V4版本在多個項目產(chǎn)品的前后端分分合合中逐漸歸一。
后端為可視化應用逐步增加了,接口參數(shù)說明、組件綁定描述、事件回調(diào)支持等多種可被圖形注解描述(可被前端直接圖形化的注解),這樣在前端可以在后端更新新接口信息,及參數(shù)時可以動態(tài)通知用戶,并提供基礎(chǔ)的參數(shù)校驗。前端也進一步將組件化拆分為事件、動作、組件、屬性等等,序列化后給后端應用。方便后端應用在權(quán)限攔截,頁面與編譯,公式執(zhí)行等多個方面充分發(fā)揮其優(yōu)勢。Module 模型應用 DSM建模工具 也在產(chǎn)品經(jīng)理的極力推薦護航下啟程上馬。
DSM除了在前端實現(xiàn)了標準化組件定義外,還通過領(lǐng)域模型將二者打通。這樣在前端組件建模時便可以直接調(diào)用后端服務模型完成數(shù)據(jù)部分API構(gòu)建。而DSM模型工具也可以在后端建模時直接讀取前端組件屬性,打通前端動作與后端服務的通訊能力。
DSM作為D&D新成員很快也得到了大家的認同。
視圖設(shè)計器通過,后端模型綁定插件快速選定后端Agg聚合服務模型接口,配置頁面快速綁定前后臺交互
后端DSM建模通過視圖模型擴展直接修改操作,前端組件模型
五, V5 OneCodeEngine 賦能低代碼
V5 版本,OneCode 進入了一個全新的時代,長達將近2年的封閉研發(fā),徹底剝離清除項目痕跡,針對600余中前端組件進行全面的標準化重構(gòu)。全面改寫OneCode 服務端,將OneCode注解體系直接擴展擴展至Dom原生支持。針對600余種組件常量常見動作梳理出完整的枚舉結(jié)構(gòu)圖,在此基礎(chǔ)上與DSM模型進行了深度整合。并確定其核心價值:
*OneCode是一款構(gòu)建在真實代碼之上的圖形化編程系統(tǒng)
*OneCode 是一款具有全站組件支持能力全面標準開放全棧低代碼應用支撐系統(tǒng)
*OneCode 是一款以領(lǐng)域模型(DDD)為指導,以Java為基礎(chǔ)語言的特定領(lǐng)域(DSM)模型構(gòu)建系統(tǒng)
OneCodeEngine 呼之而出!
全線的輔助驗證管理工具也全線登場。
首先是,全系列管理端工具插件的V5重構(gòu)驗證。工具類應用本身就是非常復雜的界面組合,而將這些界面功能以高集約的方式展現(xiàn)在Web環(huán)境上時還有全面的保留其D&D的特性,在性能響應上也要能夠滿足開發(fā)者高頻的使用。這對于底層引擎而言是非常嚴苛的考驗。OneCode家族一個新的成員OneCodeStudio 來到大家的面前。OneCodeStudio本身也是一個低代碼工程,但這個工程將所有的管理端界面以及插件工具納入管理范圍,并且從底層解構(gòu),為插件及管理工具開發(fā)者提供了一套完整的仿真調(diào)試工具,方便對平臺的擴展。 至此OneCode 本身完成了低碼應用重構(gòu)。同時也很好的驗證了,低碼本身在復雜應用中的適應性。
OneCode Studio工具集合
六, 開源工程支持范圍以及OneCode (JDSCloud 智能云)
自從阿里去年4月份開源其“LowCodeEngine” 低代碼引擎以來,CodeBee團隊就在籌劃開源版本的建設(shè),在JDSCloud初步第一個版本初步測試完畢的空檔,決定在近期發(fā)布第一個OneCode開源版本。
OneCode 開源范圍及功能:
OneCode 第一個版本,以V5版本的引擎為核心,將平臺全部600余組件的2/3貢獻到社區(qū)版本,同時為方便大家構(gòu)建自身的工程體系,還會同步開源 OneCode V3版本的支持環(huán)境VFS(JAVA開發(fā))虛擬存儲系統(tǒng),以及配合V3 部署使用的 OneCode Server 和相關(guān)的部署管理插件。
V4及V5部分由于其技術(shù)成熟度以及商業(yè)層面的考慮暫時不能在當前版本中發(fā)布,但為了方便大家自定義組件測試以及開發(fā)插件需求,我們將推出JDSCloud 的在線開發(fā)與編譯功能。大家可在線使用一碼通編輯器來編寫和測試插件程序,測試完畢編譯打包下載即可。
一碼通在線編輯器
七, 開源版本未來計劃
OneCode 從一開始就是站在巨人的肩膀上的。每一步的前行都離不開開源社區(qū)的滋養(yǎng),特別是來自于Java體系的開源小伙伴們,OneCode最終的歸宿也將是全部回饋社區(qū),這是CodeBee團隊所有成員的最終愿景。
作為回饋社區(qū)的第一步,我們將盡心最大的努力積極參與社區(qū)的版本建設(shè),為社區(qū)提供持續(xù)并穩(wěn)定的技術(shù)支持。
作為低代碼開源社區(qū)的一員,OneCode 也將積極參與社區(qū)的標準化建設(shè)。在下一版本中,OneCode 會將最大程度兼容社區(qū)老大哥阿里“LowCodeEngin”,并適時優(yōu)先推出OneCode for 阿里“LowCodeEngin”,在組件及物料跨平臺通用方面邁出堅實的一步。
2023年2月10日凌晨,首發(fā)于 文章JDS 頭條號。