投稿活动 CabloyJS:一款 NodeJS 全栈开源框架,接单快手,创业神器
CabloyJS 是什么
CabloyJS 是一款自带工作流引擎的 Node.js 全栈框架, 接单快手、创业神器
更进一步来说,CabloyJS 是一款直达业务场景诉求的 PAAS 平台,兼具低代码的开箱即用和专业代码的灵活定制,角色系统、用户认证、菜单权限、数据权限、表单渲染、表单验证、工作流引擎、字典、仪表板、在线推送、页面主题、多语言国际化、CMS 渲染引擎、微信接口、企业微信接口、钉钉接口,等等,每一项特性都做到精心调校,均体现了从开箱即用到灵活定制的无缝衔接
开发 CabloyJS 的初心
- 凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写 | Atwood 定律
目前市面上出现的大多数与 NodeJS 相关的框架,基本都将 NodeJS 定位在工具层、中间层、代理层,很少在业务层面进行深耕,认为这是 JAVA 的领域,NodeJS 不适合。这种思潮明显是与Atwood 定律相悖的
为了打造与众不同的 NodeJS 全栈开发体验和用户体验,历经 5 年时间,全职研发 CabloyJS,代码提交数达 8000 多次,在前端和后端均提供了大量实用的工具和组件,主要实现了以下功能三大亮点和架构三大亮点
1. 功能三大亮点
- 自适应布局:pc = mobile + pad
- 请大家分别在 PC 端和移动端打开
演示链接: https://test.cabloy.com/ ,来体会与众不同的自适应机制 - 市面上大多数后台管理系统,都是优先适配 PC 端,然而移动端体验却极差,想必大家都深有同感
- 请大家分别在 PC 端和移动端打开
- 基于 JSON Schema 的表单自动渲染与数据验证引擎:
- 通过在一处定义 JSON Schema,就可以同时支持前端的表单自动渲染和后端的数据验证,既能开箱即用又可灵活定制
- 内置 NodeJS 工作流引擎:
- 若要让 NodeJS 深入业务领域的开发,
工作流引擎是一个绕不过去的核心组件。CabloyJS 充分利用 JS 语言的灵活性和 JSON 格式的便捷性,提供的 NodeJS 工作流引擎远比Activiti简洁易用 - 比如我们都知道
Activiti中提供的活动节点和边界事件怎么使用,却很少有途径来了解如何开发自定义的活动节点和自定义的边界事件。但是 CabloyJS 提供的工作流引擎却可以轻松的定制所有的工作流元素,而且源码层次清晰,易于学习
- 若要让 NodeJS 深入业务领域的开发,
2. 架构三大亮点
- 模块化开发体系与模块隔离
- 为了满足大型业务系统开发的诉求,CabloyJS 采用
模块思维规划系统架构,以业务功能为单位,将与业务功能相关的前端组件与后端逻辑组织为一个业务模块,从而有利于业务功能的内聚与重用,也有利于以业务为单位进行团队分工 - 此外,业务模块内部的页面、数据、逻辑、路由、配置等元素均进行了命名空间隔离处理,从而避免模块之间的变量污染与冲突
- 为了满足大型业务系统开发的诉求,CabloyJS 采用
- 原生分布式架构
- EggJS 的定位是框架的框架,CabloyJS 后端就是在 EggJS 的基础上采用
自定义Loader扩展出来了一套适配业务场景的新特性 - 比如,EggJS 原有的
Worker + Agent进程模型,对于单机而言非常便利。但是面对多机集群,特别是基于docker的集群部署而言,Agent进程就失去了用武之地。更重要的是,如果一开始基于Agent进程进行开发,后续很难平滑的过渡到分布式场景。因此,CabloyJS 后端采用Redis,从框架底层就开始原生分布式的架构设计,并衍生出了Broadcast、Queue、Schedule、Startup等一系列分布式的开发组件,方便我们从一开始就进行分布式的开发。因此当系统起量后,可以轻松做集群扩展,参见:Broadcast, Queue, Schedule, Startup
- EggJS 的定位是框架的框架,CabloyJS 后端就是在 EggJS 的基础上采用
- 前后端分离,全场景开发
- 通过前后端分离的架构设计,可以支持全场景业务的快速开发
| 场景 | 前端 | 后端 |
|---|---|---|
| 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 提供了大量基础工具和组件,使研发人员可以快速创建业务表单和审批流程(比拖拽式还要快),达到开箱即用的效果,同时又可以进行深入的定制开发
- 此外,编码式低代码平台有利于版本变更管理,便于排查问题和持续升级维护
-
业务运营场景
- 其实,对于业务和运营场景而言,普适化的表单引擎并不是刚需,而是要根据具体的垂直场景提供可灵活定制的工具。比如,CabloyJS 提供的 CMS 内容管理和渲染引擎,可以满足大多数业务运营场景的诉求
谁会用这款 Node.js 全栈框架?
>>>>> 0. 场景画像
小王准备创业,需要开发一款多租户的 SAAS 业务系统,想请小明帮忙,希望能用有限的预算让系统尽快落地,以便尽早验证商业模型,从而控制创业的风险
小明原本在公司里做开发,由于公司有完整的技术团队做支撑,做项目还是比较顺利。但是,当小明独立面对这样一个需求时,发现原本在公司使用的技术栈用不上了
这时候,小明就希望能找到一个全栈业务开发框架,内置各种功能特性,既开箱即用,又方便二次开发、灵活定制。在此基础上进行业务的快速开发,从而能保质保量的为朋友创业助一把力
>>>>> 1. 外包接单
痛点:
客户希望项目按质如期完工、价格低、风险小;服务商希望毛利高、投入少、进度快、客户满意。如何实现二者的平衡呢?
如果接到项目,从零开始代码开发,就会放大客户与服务商之间的矛盾,增大项目的实施风险。因此,一款高质、高效、灵活的全栈框架,可以让外包接单之路走得更顺一些,更远一些
优点:
-
高效灵活:CabloyJS 历时 5 年精心打造的 Node.js 全栈框架,内置大量特性功能,开箱即用,同时又具有强大的可扩展性,便于定制开发 -
二次机会:CabloyJS 完善的基础建设,不仅让开发效率更高,而且可以引导和培育客户的日常操控体验,从而衍生出更多的业务需求和合作机会
>>>>> 2. 初创企业
诉求:
在创业成本高企、竞争越发激烈的今天,初创企业往往希望在尽短的时间、以尽少的成本,研发出最小可用产品(MVP),从而尽早发布测试、收集反馈、迭代优化
优点:
-
尽快落地:CabloyJS 采用模块化体系,支持全场景开发,确保 MVP 产品尽快落地 -
保值(纵向深入):CabloyJS 从底层内置分布式设计,并且内置工作流引擎等核心特性。当系统起量之后可以无缝支持集群部署,并在 MVP 产品的基础上继续深入开发更核心的业务,从而达到保值的效果 -
增值(横向拓展):CabloyJS 提供了模块市场,可以通过模块市场直接选购与自身业务需求相匹配的模块,以低成本快速实现业务需求,从而达到增值的效果
CabloyJS 可以开发什么系统
- 可以开发
多租户SAAS业务系统 - 可以开发前后端分离的
后台业务管理系统,如 OA、CRM、ERP、电商,等等 - 可以开发
JAMStack架构的CMS内容管理系统,支持 SEO 优化,如博客、技术文档、社区、知识店铺,等等 - 既可以先开发
后台业务管理系统,再延伸开发CMS内容管理系统;也可以反过来,先开发CMS内容管理系统,再延伸开发后台业务管理系统 - 可以通过
Cordova开发各类 App 应用,支持 IOS、Android - 可以通过
Electron开发桌面应用 - 可以开发微信公众号、企业微信、钉钉,等第三方平台的应用,解决
信息孤岛的问题 - 可以为
Uniapp小程序开发后端 API 接口
CabloyJS 开发的正式系统
| 网站类型 | 网站链接 |
|---|---|
| 后台管理系统(PC 布局) | https://admin.cabloy.com |
| 后台管理系统(Mobile 布局) | ![]() |
| 博客 | https://zhennann.com |
| 技术文档(英文) | https://cabloy.com/index.html |
| 技术文档(中文) | https://cabloy.com/zh-cn/index.html |
| 社区(英文) | https://community.cabloy.com/index.html |
| 社区(中文) | https://community.cabloy.com/zh-cn/index.html |
| 课程(英文) | https://course.cabloy.com/index.html |
| 课程(中文) | https://course.cabloy.com/zh-cn/index.html |
| Cabloy 商店(英文) | https://store.cabloy.com/index.html |
| Cabloy 商店(中文) | https://store.cabloy.com/zh-cn/index.html |
CabloyJS 的研发历程
CabloyJS 从 2016 年启动开发,主要历经两个研发阶段:
1. 第一阶段:EggBornJS
EggBornJS 关注的核心就是模块化体系与模块隔离,并以此实现一套完整的全栈开发框架
比如模块egg-born-front是框架前端的核心模块,模块egg-born-backend是框架后端的核心模块,模块egg-born是框架的命令行工具,用于创建项目骨架
2. 第二阶段:CabloyJS
EggBornJS 只是一个基础的全栈开发框架,如果要支持业务的快速开发,还需要考虑许多与业务相关的支撑特性,如:工作流引擎、用户管理、角色管理、权限管理、菜单管理、参数设置管理、表单验证、登录机制,等等。特别是在前后端分离的场景下,对权限管理的要求就提升到一个更高的水平
CabloyJS 在 EggBornJS 的基础上,提供了一套核心业务模块,从而实现了一系列业务支撑特性,并将这些特性进行有机的组合,形成完整而灵活的上层生态架构,从而支持具体的业务开发进程
信念
- 凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写 | Atwood 定律
相信,Javascript 的深度探索者都会被这句名言激发,共同努力,为 Javascript 生态添砖加瓦,构建更繁荣的应用生态
CabloyJS 正是对这一名言的探索之作。欢迎您也加入 CabloyJS 的社区生态,一起促进 Javascript 的繁荣与应用
名称的由来
1. EggBorn
这个名称的由来比较简单,因为有了 Egg(后端框架),所以就有了 EggBorn。有一部动画片叫《天书奇谭》,里面的萌主就叫 “蛋生”,我很喜欢看(不小心暴露了年龄 😅)
2. Cabloy
Cabloy 来自蓝精灵的魔法咒语,拼对了 Cabloy 这个单词就会有神奇的效果。同样,CabloyJS 是有关化学的魔法,基于模块的组合与生化反应,您将实现您想要的任何东西
License
MIT
