一文講透CabloyJS全棧框架的來龍去脈

zhennann發表於2022-11-23

本文受眾

我們們做軟體開發,就好比是建造一幢幢房屋,一座座橋樑,既可以是北方宮殿的巍峨,也可以有南方庭院的雅緻,更可以是橫跨群山的峻險與孤懸。那麼,不同的語言、不同的框架也都由其內在的秉質吸引著一批粉絲,堅持不懈的耕耘,營造出不同的生態,呈現出不同的開發風格和開發體驗。正如Rails之於RubyLavaral之於PHPDjango之於PythonSpring Boot之於Java。那麼,又是什麼之於Javascript呢?毋庸置疑,Javascript面對著更多的使用場景,前端、後端、移動端、IOT,等等。不同的場景都有出色的解決方案存在。而且,基於不同的使用偏好,又分裂出Javascript和Typescript兩個風格體系。那麼,基於業務開發而言,就目前的Node生態可以說,Nest之於TypescriptCabloy之於Javascript

正因為面對業務開發,不同的語言、不同的框架,會有不同的解決方案和風格體驗。因此,不論您使用CabloyJS或者不使用CabloyJS,都有必要進來看看在堅守原生Javascript(Vanilla JS)的土壤上,可以開出怎樣的花朵。因此,不論您是前端開發後端開發全棧開發,或者其他語言的粉絲,或者技術經理產品經理專案經理,都可以從CabloyJS提供的文件和影片中汲取不一樣的解題思路和方法,相互交流,相互借鑑,共同進步!

在英語語境中,原生Javascript有一個專屬名稱:Vanilla JS。而Vanilla有香草?之意,看來所言不虛

語言 框架
Ruby Rails
PHP Lavaral
Python Django
Java Spring Boot
Typescript Nest
Javascript Cabloy

CabloyJS是什麼

CabloyJS 是一款自帶工作流引擎的 Node.js 全棧框架,一款面向開發者的低程式碼開發平臺,更是一款兼具低程式碼的開箱即用和專業程式碼的靈活定製的 PAAS 平臺。只需一套程式碼,即可同時實現中後臺管理系統前臺應用。只需一套程式碼,即可同時跨端pcmobile,並且mobile端是接近原生體驗

CabloyJS 內建的每一項特性都做到精心調校,均體現了從開箱即用靈活定製的無縫銜接,包括:角色系統、使用者認證、選單許可權、資料許可權、表單渲染、表單驗證、工作流引擎、字典、儀表板、線上推送、頁面主題、多語言國際化、CMS 渲染引擎、微信介面、企業微信介面、釘釘介面,等等

技術棧

場景 技術棧
前端 vue2 + framework7
後端 koa2 + egg2
資料庫 mysql
分散式(快取/佇列/訊息) redis、bullmq、websocket
Markdown 富文字編輯 Prosemirror

線上演示

CabloyJS提供了大量線上演示:

  1. 演示如何在一套程式碼中同時開發B端中後臺管理系統C端前臺應用

  2. 演示如何在一套程式碼中同時跨端pcmobile,並且mobile端是接近原生體驗

因此,強烈建議您移步檢視:線上演示

引言

凡是可以用 JavaScript 來寫的應用,最終都會用 JavaScript 來寫 | Atwood 定律

目前市面上出現的大多數與 NodeJS 相關的框架,基本都將 NodeJS 定位在工具層聚合層中間層代理層,很少在業務層面進行深耕,認為這是 JAVA 的領域,NodeJS 不適合。這種思潮明顯是與Atwood 定律相悖的

如果您想感受不同的 NodeJS 全棧開發體驗,一定要試試自帶工作流引擎的 CabloyJS 全棧開源框架。為了提升業務層面的開發效率和開發體驗,CabloyJS 在前端和後端均提供了大量實用的工具和元件

CabloyJS 解決了哪些現實痛點問題?

在 NodeJS 開發領域,目前(截止 2022 年 11 月)存在以下幾個痛點問題:

1. 中後臺管理系統如何更優雅的支援移動端?

隨著移動終端的普及和升級換代,大量業務場景都需要移動端的支援,比如管理層需要透過手機檢視統計資料、稽核業務單據;運維人員透過手機遠端檢視伺服器狀態,並進行調整最佳化

我們知道,市面上大多數中後臺管理系統,都是優先適配 PC 端,然而移動端體驗卻不佳,處於勉強可用,但不好用的階段

此外,大多數XXX Admin框架中後臺管理框架其本質是程式碼模版。在具體開發專案時,直接在程式碼模版中編寫程式碼。這樣,雖然修改起來很直接,但是不利於模版的持續升級和最佳化;也不利於業務程式碼的持續沉澱和遷移(至其他專案)。因此,當把程式碼模版從原始碼倉庫下載下來之後,修改三分之一增加三分之一刪減三分之一,從此就與程式碼模版的後續升級版本絕緣了

2. NodeJS 領域沒有好用的工作流引擎!

如果單說 CRUD,大多數程式語言的開發框架都可以輕鬆實現,這不應該成為 NodeJS 開發業務系統的核心優勢。若要讓 NodeJS 深入業務領域的開發,工作流引擎是一個繞不過去的核心元件

3. 拖拽式低程式碼平臺已經成為雞肋方案!

大多數業務表單不僅僅是一些欄位的簡單組合和增刪改查,不同的業務都有自己獨特的業務訴求,往往需要前端介面的定製和後端邏輯的定製。拖拽式低程式碼平臺,對於業務人員而言沒有足夠的工具進行深入定製,對於研發人員而言也沒有足夠的機制深入開發

許多拖拽式低程式碼平臺認識到了這一點,所以針對不同的業務場景提供官方預配置的套裝解決方案,這同樣也把業務人員和研發人員置於不上不下的尷尬境地,成為食之無味 棄之可惜的雞肋平臺

CabloyJS 亮點介紹

基於上述分析的問題,CabloyJS 實現瞭如下功能三大亮點架構三大亮點

1. 功能三大亮點

1)自適應佈局:pc = mobile + pad

CabloyJS 首創獨樹一幟的pc = mobile + pad跨端自適應佈局機制:只需要一套程式碼,就可以同時相容mobile端pc端mobile端達到原生效果,同時將mobile端的操控體驗和開發模式無縫帶入pc端

請大家分別在 PC 端和手機端開啟演示連結: https://test.cabloy.com/ ,來體會與眾不同的自適應機制

2)基於 JSON Schema 的表單自動渲染與資料驗證引擎

透過在一處定義JSON Schema,就可以同時支援前端的表單自動渲染和後端的資料驗證,既能開箱即用又可靈活定製

3)內建 NodeJS 工作流引擎

CabloyJS 充分利用 JS 語言的靈活性和 JSON 格式的便捷性,提供的 NodeJS工作流引擎遠比 JAVA 領域的Activiti 簡潔易用

比如,我們一般只知道如何使用Activiti中提供的活動節點邊界事件,卻很少有途徑來了解如何開發自定義的活動節點自定義的邊界事件。由於Activiti的架構繁雜,大多數人甚至不願意嘗試去閱讀原始碼。但是 CabloyJS 提供的工作流引擎卻可以輕鬆的定製所有的工作流元素,而且原始碼層次清晰,易於學習

2. 架構三大亮點

作為一款面向開發者的低程式碼開發平臺,為了將低程式碼的開箱即用和專業程式碼的靈活定製有機融合,CabloyJS 在架構層面主要做了以下幾點:

1)模組化開發體系與模組隔離

為了滿足大型業務系統開發的訴求,CabloyJS 採用模組思維規劃系統架構,以業務功能為單位(比如出差申請),將與業務功能相關的前端元件與後端邏輯組織為一個業務模組,從而有利於業務功能的內聚與重用,也有利於以業務為單位進行團隊分工

此外,業務模組內部的頁面、資料、邏輯、路由、配置等元素均進行了名稱空間隔離處理,從而避免模組之間的變數汙染與衝突。換句話說,當我們在自己的業務模組中為某個資源命名時,不用擔心其他業務模組是否存在相同名稱的資源,從而減少心智負擔

2)原生分散式架構

EggJS 的定位是框架的框架,CabloyJS 後端在 EggJS 的基礎上採用自定義Loader機制擴充套件出來了一套適配業務場景的新特性

比如,EggJS 原有的Worker + Agent程式模型,對於單機而言非常便利。但是面對多機叢集,特別是基於docker的叢集部署而言,Agent程式就失去了用武之地。更重要的是,如果一開始基於Agent程式進行開發,後續很難平滑的過渡到分散式場景。因此,CabloyJS 後端採用Redis,從框架底層就開始原生分散式的架構設計,並衍生出了Broadcast、Queue、Schedule、Startup等一系列分散式的開發元件,方便我們從一開始就進行分散式的開發。因此當系統起量後,可以輕鬆做叢集擴充套件,參見:Broadcast, Queue, Schedule, Startup

3)前後端分離,全平臺跨端開發

透過前後端分離的架構設計,只需要一套程式碼就可以支援全平臺業務的跨端開發,包括B端後臺管理應用C端前臺應用

平臺 前端 後端
PC:Web CabloyJS 前端 CabloyJS 後端
PC:Exe CabloyJS 前端 + Electron CabloyJS 後端
Mobile:IOS CabloyJS 前端 + Cordova CabloyJS 後端
Mobile:Android CabloyJS 前端 + Cordova CabloyJS 後端
微信公眾號 CabloyJS 前端 + 微信 API CabloyJS 後端
企業微信 CabloyJS 前端 + 企業微信 API CabloyJS 後端
釘釘 CabloyJS 前端 + 釘釘 API CabloyJS 後端
Slack CabloyJS 前端 + Slack API CabloyJS 後端
小程式:微信、支付寶等 Uni-app + CabloyJS 前端 SDK CabloyJS 後端
  • 後端:由於完整的前後端分離設計,只需開發一套 CabloyJS 後端程式碼即可
  • 前端:所有可基於 H5 的場景,只需開發一套 CabloyJS 前端程式碼即可
  • 小程式:提供 CabloyJS 前端 SDK 讓 Uni-app 可以輕鬆對接 CabloyJS 後端程式碼

CabloyJS可以開發什麼系統

  1. 可以開發多租戶SAAS業務系統
  2. 可以開發前後端分離的後臺業務管理系統,如OA、CRM、ERP、電商,等等
  3. 可以開發JAMStack架構的CMS內容管理系統,支援SEO最佳化,如部落格、技術文件、社群、知識店鋪,等等
  4. 既可以先開發後臺業務管理系統,再延伸開發CMS內容管理系統;也可以反過來,先開發CMS內容管理系統,再延伸開發後臺業務管理系統
  5. 可以透過Cordova開發各類App應用,支援IOS、Android
  6. 可以透過Electron開發桌面應用
  7. 可以開發微信公眾號、企業微信、釘釘,等第三方平臺的應用,解決資訊孤島的問題
  8. 可以為Uniapp小程式開發後端API介面

CabloyJS的研發歷程

CabloyJS從2016年啟動開發,主要歷經兩個研發階段:

1. 第一階段:EggBornJS

EggBornJS關注的核心就是模組化體系模組隔離,並以此實現一套完整的全棧開發框架

比如模組egg-born-front是框架前端的核心模組,模組egg-born-backend是框架後端的核心模組,模組egg-born是框架的命令列工具,用於建立專案骨架

這也是為什麼所有業務模組都是以egg-born-module-為命名字首的原因

2. 第二階段:CabloyJS

EggBornJS只是一個基礎的全棧開發框架,如果要支援業務的快速開發,還需要考慮許多與業務相關的支撐特性,如:工作流引擎使用者管理角色管理許可權管理選單管理引數設定管理表單驗證登入機制,等等。特別是在前後端分離的場景下,對許可權管理的要求就提升到一個更高的水平

CabloyJS在EggBornJS的基礎上,提供了一套核心業務模組,從而實現了一系列業務支撐特性,並將這些特性進行有機的組合,形成完整而靈活的上層生態架構,從而支援具體的業務開發程式

有了EggBornJS,從此可複用的不僅僅是元件,還有業務模組

有了CabloyJS,您就可以快速開發各類業務應用

信念

凡是可以用JavaScript來寫的應用,最終都會用JavaScript來寫 | Atwood定律

相信,Javascript的深度探索者都會被這句名言激發,共同努力,為Javascript生態添磚加瓦,構建更繁榮的應用生態

CabloyJS正是對這一名言的探索之作。歡迎您也加入CabloyJS的社群生態,一起促進Javascript的繁榮與應用

名稱的由來

1. EggBorn

這個名稱的由來比較簡單,因為有了Egg(後端框架),所以就有了EggBorn。有一部動畫片叫《天書奇譚》,裡面的萌主就叫“蛋生”,我很喜歡看(不小心暴露了年齡?)

2. Cabloy

Cabloy來自藍精靈的魔法咒語,拼對了Cabloy這個單詞就會有神奇的效果。同樣,CabloyJS是有關化學的魔法,基於模組的組合與生化反應,您將實現您想要的任何東西

License

MIT,免費商用

相關文章