原文鏈接:https://www.nocobase.com/cn/blog/10-open-source-tools-develop...
寫在開頭
所有業務系統,都離不開 CRUD。
如果你做過 CRM、內部管理系統、審批流程、後台管理界面這類項目,大概會有一種很熟悉的感覺。每一次都要從頭開始,把整套 CRUD 再實現一遍。
在企業內部系統中:不同部門、不同項目、不同階段,各自維護着結構高度相似的系統,卻彼此割裂。系統越多,重複的 CRUD 也越多,維護成本隨之累積。
在外包和集成場景裏,這個問題尤其明顯。項目之間看起來相似,卻無法真正複用;客户覺得改動不大,交付方卻需要付出成倍的維護成本。每一個新客户,幾乎都意味着一套新的 CRUD 生命週期。
今天這篇文章,我會按照不同思路給開發者推薦可以有效減少重複 CRUD 的開源工具。
💡 推薦閲讀:GitHub 上 Stars 數量最多的 8 個開源 CRUD 項目
💬 嗨!你正在閲讀 NocoBase 博客。NocoBase 是一個極易擴展的 AI 無代碼/低代碼開發平台,用於構建企業應用、內部工具和各類系統。它完全支持自託管,基於插件架構設計,開發者友好。→ 歡迎在 GitHub 上了解我們
減少 CRUD 重複的思路
減少重複 CRUD,可以從不同層面入手。
第一種方式:更快地把 CRUD 寫完
這是最常見的做法。用腳手架、代碼生成、模板工程,把基礎的增刪改查儘快搭出來,減少手寫樣板代碼的時間。
第二種方式:減少後台和管理界面的重複
把常見的後台能力抽出來複用,比如通用的列表、表單、權限、基礎配置界面。這種方式的核心在於減少界面和管理功能的重複開發,但數據結構和業務規則仍然由代碼定義。每個項目依然有自己的一套模型,只是後台實現方式更加統一。
第三種方式:降低項目之間的差異成本
當重複開始出現在需求結構層面時,單純複用後台代碼已經不夠了。於是有些方案選擇把字段、關係、權限、流程從代碼中抽離出來,用配置或數據模型來描述。在這種模式下,不同項目之間的差異,更多體現在模型配置的不同,而不是代碼結構的不同。
第四種方式:避免反覆交付相似系統
數據模型、權限和擴展機制圍繞同一套核心結構。新增需求更像是擴展系統,而不是重新交付系統。這種方式成本更高,但解決的也是最根本的問題:為什麼相似的系統,總是要從頭再來。
工具推薦
下面我從四種方式分別推薦能解決對應問題的產品和工具。你可以根據自己的項目的實際情況,選擇最適合的工具。讓我們從第四種方式先開始。
把 CRUD 當成長期系統能力
NocoBase
官網:https://www.nocobase.com/
GitHub:https://github.com/nocobase/nocobase
GitHub Star 數:21k
NocoBase 是一款開源的無代碼/低代碼開發平台,可以幫助將企業的 CRUD 能力從一次性開發轉變為系統能力。它通過數據模型驅動的方式,讓業務人員和技術人員能夠協同構建複雜的業務系統,而無需每次都從零開始編寫增刪改查代碼。
核心能力:
- 數據模型驅動的 CRUD:通過可視化界面定義數據表、字段和關聯關係,系統自動生成完整的創建、讀取、更新、刪除界面和 API,無需手寫任何代碼。NocoBase 支持直接連接 PostgreSQL、MySQL、MariaDB 等主流數據庫,在不遷移、不改造原有數據結構的前提下,將已有數據快速接入並構建業務系統。
- 靈活的前端配置:支持各種字段類型、表單驗證、動態顯隱、聯動規則,可以配置出符合業務邏輯的數據錄入界面,減少前端開發工作。
- 強大的查詢和列表能力:內置不同類型的區塊,支持篩選、排序、分頁、導出等功能,可以通過配置實現複雜的數據展示需求。
- 細粒度權限控制:不僅支持角色和用户權限,還可以控制到字段級別(誰能查看/編輯哪些字段)和數據級別(誰能操作哪些數據行),在 CRUD 層面保證數據安全。
- 可擴展的工作流:通過工作流引擎配置業務流程,比如數據提交後的審批、狀態變更、自動通知等,讓 CRUD 操作融入業務流程而非孤立的數據操作。
- 插件化架構:對於複雜的 CRUD 邏輯,可以通過插件擴展系統功能,一次開發、多次複用,不同項目可以共享自定義插件。
適用場景:需要長期維護的企業內部系統、多個相似項目、同時希望將業務配置權交給非技術人員的團隊。
Odoo
官網:https://www.odoo.com/
GitHub:https://github.com/odoo/odoo
GitHub Star 數:48.1k
Odoo 是高度模塊化的企業資源規劃(ERP)和業務管理平台,通過統一的數據庫模型和應用框架,將各類業務場景的 CRUD 操作標準化、模塊化。從 CRM 到庫存管理,從會計到人力資源,所有模塊都基於同一套數據模型和權限體系,避免了不同系統之間的重複開發和數據割裂。
核心能力:
- 統一的 CRUD 框架:所有 Odoo 模塊都基於同一套 ORM 框架和視圖系統,定義一個數據模型後,列表視圖、表單視圖、搜索視圖自動生成,大幅減少重複的界面開發。
- 模塊化的業務邏輯複用:每個業務模塊都是獨立的 CRUD 應用,可以單獨安裝或組合使用,新增業務需求時往往只需安裝或配置模塊,而不是重新開發。
- 關聯數據自動打通:由於所有模塊共享同一數據庫,一個模塊的 CRUD 操作可以自動關聯到其他模塊,比如創建銷售訂單時自動扣減庫存、更新客户信息,避免了跨系統集成的 CRUD 開發。
- 自動化和規則引擎:通過自動化動作(Automation)和業務規則,可以在數據的創建、更新、刪除時觸發自定義邏輯,比如狀態流轉、自動計算字段、發送通知等,無需編寫代碼即可擴展 CRUD 行為。
適用場景:中小企業的一體化業務管理、需要標準業務流程的行業、希望開箱即用的團隊
把 CRUD 從代碼變成配置
Directus
官網:https://directus.io/
GitHub:https://github.com/directus/directus
GitHub Star 數:33.8k
Directus 是一個將現有數據庫轉化為完整的後端平台和 CRUD 應用的工具。它連接到你已有的 SQL 數據庫,自動生成 RESTful 和 GraphQL API,同時提供可視化的管理界面和數據模型配置能力,讓你無需編寫任何後端代碼,就能為任意數據庫提供完整的增刪改查能力。
核心能力:
- 自動生成 CRUD API:連接到數據庫後,Directus 自動掃描表結構,為每張表生成標準的增刪改查 API(Create、Read、Update、Delete),同時支持 RESTful 和 GraphQL 兩種查詢方式,前端可以直接調用而無需開發後端。
- 可視化的數據模型管理:通過界面管理表結構、字段類型、關聯關係,所有修改都會同步到數據庫,無需手寫 SQL 遷移腳本,數據模型的變化直接反映在 API 和管理界面。
- 聲明式權限控制:通過配置界面定義不同角色的 CRUD 權限,可以精確到字段級別(哪些角色能讀取/編輯哪些字段)和數據級別(行級權限,基於動態規則過濾數據),權限配置自動應用到 API 和管理界面。
- 即時可用的管理後台:為每張表自動生成列表和表單界面,支持搜索、篩選、排序、分頁,可以直接用於內部管理或作為快速原型,大幅減少後台開發時間。
適用場景:已有數據庫需要快速構建管理後台、需要統一的 API 和權限層、希望將業務配置從代碼中解耦。
Hasura
官網:https://hasura.io/
GitHub:https://github.com/hasura/graphql-engine
GitHub Star 數:31.9k
定位:一個即時的 GraphQL 引擎,連接到現有數據庫後,在幾秒鐘內為你生成高性能的 CRUD GraphQL API。它通過配置化的方式控制權限、驗證和業務邏輯,讓你無需編寫後端代碼,就能為任何應用提供完整的數據查詢和變更能力。
核心能力:
- 秒級生成 GraphQL CRUD API:連接數據庫後,Hasura 自動為每張表生成查詢、插入、更新、刪除的 GraphQL 操作,所有 CRUD 操作通過統一的 GraphQL 端點完成,無需手寫 REST API。
- 強大的查詢能力:支持過濾、分頁、排序、聚合、嵌套關聯查詢,一次請求可以完成多個 CRUD 操作,減少網絡往返,前端可以靈活獲取所需數據。
- 實時訂閲:基於數據庫的變更數據捕獲(CDC)功能,可以對任何 CRUD 操作建立實時訂閲,當數據發生變化時自動推送給客户端,無需手動實現 WebSocket。
- 遠程 Schema 聯合:可以將 Hasura 生成的 CRUD API 與其他 GraphQL 服務聯合起來,形成統一的 API 網關,在一個 GraphQL 查詢中同時操作多個數據源。
- 事件觸發器:當數據庫發生 CRUD 操作時,可以觸發 Webhook 調用外部服務,實現數據變更後的通知、同步、清理等業務邏輯。
適用場景:需要高性能 GraphQL API 的項目、前端團隊希望直接控制數據獲取邏輯、微服務架構中的 BFF 層。
Supabase
官網:https://supabase.com/
GitHub:https://github.com/supabase/supabase
GitHub Star 數:95.4k
作為開源的 Firebase 替代方案,Supabase 提供 PostgreSQL 數據庫、即時 CRUD API、身份驗證、實時訂閲、文件存儲等完整後端功能。你只需要定義數據庫結構,Supabase 會自動生成相應的增刪改查能力,讓你在幾分鐘內啓動一個完整的全棧應用,無需編寫任何後端代碼。
核心能力:
- 自動生成 CRUD API:創建表後,Supabase 自動生成 RESTful API,支持所有標準的增刪改查操作,並提供多語言 SDK(JavaScript、TypeScript、Python 等),幾行代碼即可完成數據操作
- 行級安全策略(RLS):在 PostgreSQL 原生的行級安全策略基礎上,通過 SQL 規則定義誰能對哪些數據執行 CRUD 操作,權限邏輯直接在數據庫層執行,無法繞過,安全性高
- 實時數據同步:基於 PostgreSQL 的邏輯複製功能,可以為任何表的 CRUD 操作建立實時訂閲,當數據被插入、更新或刪除時,自動推送給所有訂閲的客户端,無需額外開發
- 內置身份認證:提供完整的用户認證系統(郵箱、密碼、OAuth、手機號等),並且與 RLS 集成,用户只能 CRUD 自己的數據,開箱即用的多租户能力
- 可視化的表管理:提供在線的表編輯器,可以創建表、定義字段、設置關聯關係、插入和修改數據,無需 SQL 也能管理數據庫結構
適用場景:需要快速啓動的 SaaS 產品、希望減少後端搭建時間的初創團隊、需要實時功能的應用
減少後台和管理界面的重複
Appsmith
官網:https://appsmith.com/
GitHub:https://github.com/appsmithorg/appsmith
GitHub Star 數:38.8k
Appsmith可以讓開發者能夠通過可視化方式快速構建 CRUD 界面。與 Retool 類似,但完全開源且可自託管,你可以將它部署在自己的服務器上,數據無需經過第三方服務,非常適合對數據安全有要求的場景。
核心能力:
- 可視化構建 CRUD 應用:提供表格、表單、按鈕、圖表等組件,拖拽即可搭建完整的數據管理界面,表格支持內聯編輯、批量操作,表單支持多步提交、文件上傳等複雜場景。
- 連接多種數據源:支持連接 SQL/NoSQL 數據庫、REST API、GraphQL、SaaS 服務等多種數據源,可以在一個應用中整合多個數據來源的 CRUD 操作。
- JS 代碼增強:每個組件的動作可以編寫 JavaScript 代碼,比如提交前校驗、成功後的跳轉、錯誤處理等,靈活處理各種 CRUD 業務邏輯。
- 響應式佈局和主題定製:支持響應式設計,界面可以適配不同屏幕尺寸,提供主題編輯器,可以自定義品牌色、字體、間距等,讓 CRUD 界面符合企業 VI 規範。
- API 支持:構建的應用可以暴露為 REST API,將手動操作的 CRUD 界面轉化為可調用的服務。
適用場景:需要構建定製化後台的團隊、希望代碼可控的開源優先項目、需要頻繁調整內部工具的業務、對數據安全有高要求的行業
AdminJS
官網:https://adminjs.co/
GitHub:https://github.com/softwarebrothers/adminjs
GitHub Star 數:8.9k
定位:一個基於 Node.js 的自動管理後台生成工具,它能夠連接到現有的後端應用,根據數據模型自動生成完整的 CRUD 管理界面。你只需要提供數據模型定義(比如 TypeORM 實體、Prisma schema),AdminJS 會自動生成列表頁、表單頁、篩選器等所有標準功能。
核心能力:
- 完整 CRUD 功能開箱即用:自動生成的界面包含列表展示、搜索、篩選、排序、分頁、創建表單、編輯表單、刪除確認等功能,無需任何前端開發即可使用。
- 靈活的界面定製:可以通過配置自定義每個模型的顯示字段、表單佈局、驗證規則、操作按鈕,也可以編寫自定義組件實現特殊的 CRUD 交互。
- 權限控制集成:支持基於角色的訪問控制,可以限制不同用户對哪些模型有 CRUD 權限,也可以在配置中通過函數動態決定權限邏輯。
- 易於集成:只需幾行代碼就能將 AdminJS 集成到現有 Express、Hapi、NestJS 應用中,不會改變現有的代碼結構,可以作為管理後台的快速方案。
適用場景:已有 Node.js 後端的項目、需要快速添加管理界面的場景、希望自動生成而非從零開發
更快地把 CRUD 寫完
Rails Generators
官網:https://rubyonrails.org/
GitHub:https://github.com/rails/rails
GitHub Star 數:58k
定位:Ruby on Rails 框架內置的代碼生成工具,通過約定優於配置的理念和腳手架機制,能夠快速生成完整的 CRUD 代碼。你只需要定義數據模型,一條命令就能生成模型類、數據庫遷移、控制器、視圖、路由、測試等所有必要的代碼,大幅減少重複的樣板代碼編寫。
核心能力:
- Scaffold 腳手架:一條命令(如
rails generate scaffold Post title:string body:text)即可生成完整的 CRUD 功能,包括模型、遷移文件、控制器(包含 index、show、new、edit、create、update、destroy 七個標準動作)、視圖文件(列表、詳情、新建、編輯表單)和路由配置。 - 資源路由:聲明
resources :posts後,自動生成所有標準的 CRUD 路由(GET /posts、GET /posts/:id、POST /posts、PATCH/PUT /posts/:id、DELETE /posts/:id),無需逐個定義 - Strong Parameters:通過參數白名單機制自動過濾表單提交的數據,只有允許的字段才會被賦值給模型,防止批量賦值漏洞,同時減少手動參數處理代碼。
- 測試框架集成:生成 CRUD 代碼時,同時生成對應的測試文件(單元測試和功能測試),包含基本的 CRUD 操作測試用例,鼓勵測試驅動開發。
適用場景:使用 Ruby 技術棧的團隊、需要快速啓動的 CRUD 項目、重視開發體驗和代碼規範的團隊。
JHipster
官網:https://www.jhipster.tech/
GitHub:https://github.com/jhipster/generator-jhipster
GitHub Star 數:22.3k
定位:一個為 Java / Spring Boot 生態打造的應用腳手架,能夠快速生成包含實體、CRUD API、前端界面、安全配置等完整功能的企業級應用。它生成符合行業標準、可維護性高的代碼,讓 Java 開發者從繁瑣的配置和樣板代碼中解放出來,專注於業務邏輯。
核心能力:
- 實體驅動的 CRUD 生成:通過定義實體(Entity)和字段(Field),JHipster 自動生成後端的 JPA 實體類、Repository、Service、REST Controller(包含 CRUD 端點),以及前端的列表頁、表單頁、詳情頁。
- 完整的技術棧集成:後端使用 Spring Boot、Spring Security、Spring Data JPA,前端支持 Angular、React、Vue 三種選擇,生成的代碼包含數據庫連接、事務管理、異常處理、日誌記錄等所有企業級配置。
- 權限和安全:集成了 Spring Security,生成的 CRUD 端點默認需要認證,可以通過註解配置角色權限(@PreAuthorize),前端自動處理登錄、登出、權限檢查。
- 微服務支持:可以選擇生成單體應用或微服務架構,微服務模式下包含服務註冊、配置中心、網關等組件,生成的 CRUD 服務可以直接註冊到集羣。
適用場景:Java 企業級應用開發、需要標準化項目結構的團隊、希望前後端一體化生成的項目。
Yeoman
官網:https://yeoman.io/
GitHub:https://github.com/yeoman/yeoman
GitHub Star 數:10.1k
定位:一個通用的項目腳手架工具,通過 Generator(生成器)生態系統,為各種技術棧和項目類型提供快速初始化 CRUD 項目的能力。它本身不生成代碼,而是提供一個運行 Generator 的框架,開發者可以創建或複用社區 Generator,快速搭建項目基礎結構。
核心能力:
- 交互式項目初始化:運行 Generator 時,通過問答形式收集項目配置(技術棧、包管理器、構建工具、是否需要認證、數據庫類型等),根據選擇生成定製化的項目結構。
- 豐富的 Generator 生態:社區提供了數千個 Generator,涵蓋各種 CRUD 應用場景,比如
generator-node-express-mongo(生成 Node + Express + MongoDB 的 CRUD 後端)、generator-gulp-webapp(生成前端應用)、generator-jhipster(JHipster 也基於 Yeoman)。 - 自定義團隊 Generator:可以將團隊常用的 CRUD 項目結構、代碼規範、依賴版本固化為自定義 Generator,新項目通過一條命令即可生成統一結構的代碼,避免不同開發者"各自發揮"。
- 模塊化和組合:Generator 可以繼承和組合其他 Generator,比如一個業務系統的 Generator 可以複用基礎的 CRUD Generator,再添加業務特定的配置和代碼。
- 與構建工具集成:生成的項目通常包含完整的構建配置(Webpack、Vite、Gradle 等),npm install 後即可運行,無需額外配置。
- 更新和版本管理:Generator 本身可以獨立升級,團隊可以使用最新版本的 Generator 生成新項目,而不需要手動複製和修改舊項目。
適用場景:需要自定義項目腳手架的團隊、多種技術棧共存的組織、希望統一團隊項目結構
寫在最後
減少重複 CRUD,本質上是在不同層面建立複用能力。
從腳手架、代碼生成,到配置平台和系統架構,每種方式都有它適合解決的問題,也都有它的邊界。
所以在選工具之前,值得認真想清楚三件事:
- 這個問題,會不會在下一個項目裏再次出現?
- 是現在多花一點時間,還是以後一遍遍重寫?
- 當系統從 10 個表變成 100 個表時,這個工具還能不能撐住?
工具只是起點。能否建立一套不會被需求變化輕易推翻的系統能力,才是長期效率的分水嶺。
如果你覺得這篇文章有幫助,歡迎分享給更多的朋友!❤️
聲明:本文由 AI 協助撰寫,真人添加觀點、數據與圖片。
相關閲讀:
- GitHub Star 數量前 12 的 AI 工作流項目
- 最適合外包交付的 6 個開源無代碼與低代碼
- GitHub 上星星數量前 10 的 AI CRM 開源項目
- 如何快速搭建一個替換 Excel 的系統?(完整指南)
- GitHub Star 數量前 5 的開源 AI 內部工具
- 8 個最佳 Google Sheets 替代方案(附成本與能力分析)
- 6個適合做 PoC 的開源無代碼/低代碼工具推薦
- 給開發者的無代碼/低代碼技術決策指南(2026)