一.low-code 是什么?
A low-code development platform (LCDP) is software that provides a development environment used to create application software through graphical user interfaces and configuration instead of traditional hand-coded computer programming. A low-code model enables developers of varied experience levels to create applications using a visual user interface in combination with model-driven logic.
通過 GUI、配置化的方式代替傳統的手寫代碼編程,讓經驗背景不同的開發者都能在低代碼開發平台上,基於可視化的 UI 和模型驅動的邏輯來創建應用程序
利用低代碼平台創建整個 App,或者只在一些特定場景需要人工編碼,減少了所需的人工代碼量,一方面能夠提高業務交付速度,另一方面也能讓廣大非專業開發者參與應用開發,降低了開發門檻和人力成本
技術上,實現低代碼平台的關鍵要素是模型驅動設計、代碼自動生成和可視化編程,通過這些手段來隱藏下層的代碼細節
low-code 與 no-code
最 low 程度的 low-code 就是 no-code,也就是說,最大區別在於 no-code 無需編碼:
No-code development platforms are similar to low-code development platforms but require no coding at all.
具體的,主要差異在於:
-
平台用戶:任何業務人員都能使用無代碼平台,而低代碼平台只面向開發者(盡管專業要求不那么高)
-
核心設計:無代碼平台傾向於采用聲明式的模型驅動機制,讓用戶通過拖拽或簡單的表達式來操縱完成應用設計,而低代碼平台更傾向於通過人工編碼來指定應用程序的核心結構
-
用戶界面:無代碼平台為了簡化應用設計,一般只支持內置的 UI 庫,而低代碼平台可能會提供更靈活的 UI 選項,但代價是需要額外編碼,使用上的復雜性有所增加
二.與 20 年前的 Dreamweaver 有什么區別?
聽起來,似乎與網頁三劍客時代的 Dreamweaver 沒什么區別:

與現代的前端 low-code 開發平台相比,單從表面上看,可視化地自動生成一些代碼確實沒有太大區別,內在的實質性差異在於:
-
目標場景不同:Dreamweaver 更多地聚焦前端開發場景,而在 low-code 開發平台中,前端只是完整應用程序的一部分,服務端數據、路由、邏輯流程等都需要考慮在內
-
可視化操作粒度不同:現代 low-code 平台通常有組件、區塊、頁面、模板等多級復用抽象,Dreamweaver 只面向 HTML 原生標簽
-
工程鏈路完備程度不同:Dreamweaver 僅覆蓋到開發、預覽、部署(FTP 上傳)環節,而現代 low-code 平台大多涵蓋了完整的生命周期,包括發布前的調試、測試,發布后的監控運維等各個環節
隨着前端工程體系的一路演進,現代的 low-code 平台充分考慮了模塊復用、生態接壤、前后端聯動、工程管理等重要因素,在成熟度和開發效率方面相比 Dreamweaver 都有了質的飛躍
三.前端為什么需要 low-code?
近幾年 low-code 理念在前端領域逐漸流行起來,主要有這些原因:
-
被資源化的前端開發者:工作量大,但技術要求大多不高,生產效率成為了必須要解決的問題
-
開放的前端技術體系:low-code 類代碼生成工具很容易與前端技術體系結合起來
-
趨於成熟的前端工程化體系:成熟穩定的前提下,才會轉而追求變革式的生產效率突破
被資源化的前端開發者
面對大量低技術含量的需求,前端開發者就變成了極易替代的資源(就像低值易耗資產一樣),前端人力進而成為產品需求迭代的瓶頸
此時,最好的解決辦法是通過工具化、自動化的方式提高生產效率,突破前端資源瓶頸,自然就有了 low-code 方向的探索和實踐,諸如 jQuery 時代的表單生成器、移動時代的 H5 頁面制作工具
開放的前端技術體系
與移動 Native 客戶端、服務端等技術相比,前端技術體系最為開放(甚至所有源碼都是公開的),體現在:
-
第三方模塊引入成本極低:無論布局容器、樣式主題、邏輯模塊、甚至整站,一行標簽直接引進來就能用,甚至能夠隨時動態引入
-
擁有基於 Web 標准的開放生態:整個前端生態都建立在統一的標准層之上,任何一點創新都很容易累積起來,也總能站在巨人的肩膀上進一步創新
因此,low-code 平台得以站在巨人肩上前行,在組件庫、構建工具、甚至可視化設計、代碼自動生成的基礎上進一步探索。另一方面,前端 low-code 產物都能應用到現有的任何前端應用程序中,無論生成的是 React/Vue 組件、jQuery 表單,還是SPA(Single Page App)、MPA(Multiple Page App)
趨於成熟的前端工程化體系
既不在十幾年前,也不在更遠的將來,而是現在,為什么?
最重要的一點,low-code 平台的發展是在前端工程化體系趨於成熟的背景之下。畢竟只有溫飽問題都解決得差不多了,才能轉而追求更高的生產效率
從技術演進的角度來看,前端 low-code 探索與前端工程化的發展歷程息息相關:
前端工程化歷經了這樣幾個階段:
- CLI 工具:腳手架、構建工具、調試服務等等
- GUI 客戶端:GUI 化的 CLI 工具,除交互方式外區別不大
- 定制化端 IDE:基於 IDE 擴展腳手架、構建、調試、發布、監控等工程鏈路能力
- 雲 IDE:基於 Web IDE 擴展一系列工程鏈路能力,進入雲研發時代
(摘自定制化 IDE 的核心價值)
在 CLI/GUI 工具時代,編碼層面的效率提升主要體現在通過腳手架自動生成模板代碼,減少了樣板代碼的編寫,讓開發者碼得更少
在接下來的端/雲 IDE 時代,API 提示、自動補全、代碼片段(Snippets)等實用功能也通通集成進來了,讓開發者碼得飛快
IDE 時代之后,編碼層面的效率提升已經達到極致,更進一步的生產效率提升需要變革式的突破。於是,迎來了 low-code 時代,讓非專業開發者也能“碼”得又好又快
從前端工程化的角度來看,low-code 是工程效率提升的重要方向(也是必經之路),不難發現其中的 low-code 演進痕跡:
-
模型驅動設計:從直接操作 DOM 到數據驅動視圖,提升代碼可預測性
-
代碼自動生成:從模板到代碼片段到搭建,不斷減少人工代碼量
-
可視化編程:從組件拼裝到拖拽生成,減少低效的重復工作
P.S.實際上,low-code 平台的發展不局限於前端領域,移動 Native 客戶端、服務端也有眾多 low-code 探索,例如Xcode SwiftUI:


以及阿里雲邏輯編排:

並且,據研究機構 Forrester 估計,低代碼開發平台有着極其廣闊的市場,可細分為數據庫、請求處理、移動端、流程和通用低代碼平台:
Segments in the market include database, request handling, mobile, process and general purpose low-code platforms.
(摘自Low-code development platform)
四.前端領域的 low-code 探索
審視傳統的前端工作流:
業務需求 -> 設計稿 -> 應用/頁面/組件開發(還原設計) -> 業務邏輯代碼 -> 構建 -> 發布
具體的,還原設計分為 3 種方式:
-
開發單一組件:視覺效果還原以及模塊功能開發
-
基於組件開發頁面:組件拼裝、組件間交互以及頁面整體邏輯串聯
-
基於頁面開發應用:路由配置
其中許多環節都能通過代碼生成工具提高效率:
-
設計稿 -> 組件代碼:即自動化設計還原,例如imgcook
-
組件代碼 -> 設計素材:反向轉換,豐富設計素材
-
組件 -> 頁面:通過可視化搭建簡化組件拼裝,自動生成頁面代碼
-
頁面 -> 應用:可視化配置生成 SPA 或 MPA
-
業務需求 -> 業務邏輯代碼:通過可視化地編輯條件、綁定數據、指定數據流向等方式生成樣板化的業務邏輯代碼
在設計還原自動化(以及反向轉換)的基礎上,UI 素材與前端組件之間的界限幾乎不復存在了,UI 素材與前端組件能夠互通(UI 素材即前端組件,前端組件即 UI 素材),不僅提升了雙方的生產效率,還大幅降低了協作成本
五.low-code 模式下新的可能性
-
可視化研發模式:復雜度轉移到工具中,專業性要求降低
-
low-code 與智能化結合:素材/組件智能批量生成、結合端智能、個性化推薦等技術,讓用戶根本停不下來
-
low-code 打入專業開發工具:在面向專業開發者的 IDE 中提供部分可視化輔助工具,如支付寶小程序 IDE
-
前后端一體的 low-code 方案:在端雲一體化開發的基礎上更進一步,自動生成、部署相應的BFF/SFF代碼
像雲計算產品將專業的運維工作轉移到了雲供應商一樣,low-code 模式將專業的組件開發工作、甚至 BFF 接口開發工作都轉移到了可視化研發工具側,把專業的前端技術以普惠的方式賦能給了更多的非專業開發者,同時可視化輔助工具與專業 IDE 相結合,也讓專業的開發者更加高效
另一方面,前端生產力和生產效率提上來、專業性要求降下去之后,之前受限於開發成本而無法實現的事情都可以開始探索了,比如面向海量細分用戶群體的個性化 UI(所謂千人千面)、自媒體時代的個人建站(再小的個體也可以有自己的平台)、高時效性的百變運營(而不只是發條push消息)……
