CabloyJS究竟是一款什么样的框架
CabloyJS是什么样的框架
CabloyJS 是一款自带工作流引擎的 Node.js 全栈框架,一款面向开发者的低代码开发平台,更是一款兼具低代码的开箱即用和专业代码的灵活定制的 PAAS 平台
CabloyJS 内置的每一项特性都做到精心调校,均体现了从开箱即用到灵活定制的无缝衔接,包括:角色系统、用户认证、菜单权限、数据权限、表单渲染、表单验证、工作流引擎、字典、仪表板、在线推送、页面主题、多语言国际化、CMS 渲染引擎、微信接口、企业微信接口、钉钉接口,等等
技术栈
| 场景 | 技术栈 | 
|---|---|
| 前端 | vue2 + framework7 | 
| 后端 | koa2 + egg2 | 
| 数据库 | mysql | 
| 分布式(缓存/队列/消息) | redis、bullmq、websocket | 
| Markdown 富文本编辑 | Prosemirror | 
在线演示
请使用PC和Mobile分别访问演示站点,体验与众不同的pc=mobile+pad自适应风格,真正的跨多端架构,一套代码同时适配PC端和Mobile端
| 场景 | 链接/二维码 | 
|---|---|
| PC端 | https://test.cabloy.com/ | 
| Mobile端 |  | 
| 账号类型 | 名称 | 密码 | 
|---|---|---|
| 管理员 | admin | 123456 | 
| 普通用户 | tom | 123456 | 
| 普通用户 | jane | 123456 | 
引言
凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写 | Atwood 定律
目前市面上出现的大多数与 NodeJS 相关的框架,基本都将 NodeJS 定位在工具层、聚合层、中间层、代理层,很少在业务层面进行深耕,认为这是 JAVA 的领域,NodeJS 不适合。这种思潮明显是与Atwood 定律相悖的
如果您想感受不同的 NodeJS 全栈开发体验,一定要试试自带工作流引擎的 CabloyJS 全栈开源框架。为了提升业务层面的开发效率和开发体验,CabloyJS 在前端和后端均提供了大量实用的工具和组件
CabloyJS 解决了哪些现实痛点问题?
在 NodeJS 开发领域,目前(截止 2022 年 1 月)存在以下几个痛点问题:
1. 中后台管理系统如何更优雅的支持移动端?
随着移动终端的普及和升级换代,大量业务场景都需要移动端的支持,比如管理层需要通过手机查看统计数据、审核业务单据;运维人员通过手机远程查看服务器状态,并进行调整优化
我们知道,市面上大多数中后台管理系统,都是优先适配 PC 端,然而移动端体验却不佳,处于勉强可用,但不好用的阶段
此外,大多数XXX Admin框架和中后台管理框架其本质是代码模版。在具体开发项目时,直接在代码模版中编写代码。这样,虽然修改起来很直接,但是不利于模版的持续升级和优化;也不利于业务代码的持续沉淀和迁移(至其他项目)。因此,当把代码模版从源码仓库下载下来之后,修改三分之一,增加三分之一,删减三分之一,从此就与代码模版的后续升级版本绝缘了
2. NodeJS 领域没有好用的工作流引擎!
如果单说 CRUD,大多数编程语言的开发框架都可以轻松实现,这不应该成为 NodeJS 开发业务系统的核心优势。若要让 NodeJS 深入业务领域的开发,工作流引擎是一个绕不过去的核心组件
3. 拖拽式低代码平台已经成为鸡肋方案!
大多数业务表单不仅仅是一些字段的简单组合和增删改查,不同的业务都有自己独特的业务诉求,往往需要前端界面的定制和后端逻辑的定制。拖拽式低代码平台,对于业务人员而言没有足够的工具进行深入定制,对于研发人员而言也没有足够的机制深入开发
许多拖拽式低代码平台认识到了这一点,所以针对不同的业务场景提供官方预配置的套装解决方案,这同样也把业务人员和研发人员置于不上不下的尴尬境地,成为食之无味 弃之可惜的鸡肋平台
CabloyJS 亮点介绍
基于上述分析的问题,CabloyJS 实现了如下功能三大亮点和架构三大亮点
1. 功能三大亮点
- 自适应布局:pc = mobile + pad
CabloyJS 首创pc = mobile + pad的自适应布局机制:只需要一套代码,mobile端达到原生效果,同时将mobile端的操控体验和开发模式无缝带入pc端
请大家分别在 PC 端和手机端打开演示链接: https://test.cabloy.com/ ,来体会与众不同的自适应机制
- 基于 JSON Schema 的表单自动渲染与数据验证引擎
通过在一处定义JSON Schema,就可以同时支持前端的表单自动渲染和后端的数据验证,既能开箱即用又可灵活定制
- 内置 NodeJS 工作流引擎
CabloyJS 充分利用 JS 语言的灵活性和 JSON 格式的便捷性,提供的 NodeJS工作流引擎远比 JAVA 领域的Activiti 简洁易用
比如,我们一般只知道如何使用Activiti中提供的活动节点和边界事件,却很少有途径来了解如何开发自定义的活动节点和自定义的边界事件。由于Activiti的架构繁杂,大多数人甚至不愿意尝试去阅读源码。但是 CabloyJS 提供的工作流引擎却可以轻松的定制所有的工作流元素,而且源码层次清晰,易于学习
2. 架构三大亮点
作为一款面向开发者的低代码开发平台,为了将低代码的开箱即用和专业代码的灵活定制有机融合,CabloyJS 在架构层面主要做了以下几点:
- 模块化开发体系与模块隔离
为了满足大型业务系统开发的诉求,CabloyJS 采用模块思维规划系统架构,以业务功能为单位(比如出差申请),将与业务功能相关的前端组件与后端逻辑组织为一个业务模块,从而有利于业务功能的内聚与重用,也有利于以业务为单位进行团队分工
此外,业务模块内部的页面、数据、逻辑、路由、配置等元素均进行了命名空间隔离处理,从而避免模块之间的变量污染与冲突。换句话说,当我们在自己的业务模块中为某个资源命名时,不用担心其他业务模块是否存在相同名称的资源,从而减少心智负担
- 原生分布式架构
EggJS 的定位是框架的框架,CabloyJS 后端在 EggJS 的基础上采用自定义Loader机制扩展出来了一套适配业务场景的新特性
比如,EggJS 原有的Worker + Agent进程模型,对于单机而言非常便利。但是面对多机集群,特别是基于docker的集群部署而言,Agent进程就失去了用武之地。更重要的是,如果一开始基于Agent进程进行开发,后续很难平滑的过渡到分布式场景。因此,CabloyJS 后端采用Redis,从框架底层就开始原生分布式的架构设计,并衍生出了Broadcast、Queue、Schedule、Startup等一系列分布式的开发组件,方便我们从一开始就进行分布式的开发。因此当系统起量后,可以轻松做集群扩展,参见:Broadcast, Queue, Schedule, Startup
- 前后端分离,全场景开发
通过前后端分离的架构设计,可以支持全场景业务的快速开发
| 场景 | 前端 | 后端 | 
|---|---|---|
| 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可以开发什么系统
- 可以开发多租户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是框架的命令行工具,用于创建项目骨架
这也是为什么所有业务模块都是以
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
相关链接
CabloyJS究竟是一款什么样的框架的更多相关文章
- 几款主流PHP框架的优缺点评比
		PHP是一种在国内外都比较流行的开源服务器端脚本开发语言.能够适应大中小型项目的开发需求.我们将在这篇文章中向大家介绍几款主流PHP框架及其相关优缺点评比,作为一个参考分享给朋友们. 主要参考的PHP ... 
- Django是Python下的一款网络服务器框架
		被解放的姜戈01 初试天涯 Django是Python下的一款网络服务器框架.Python下有许多款不同的框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django ... 
- 11 款最好 CSS 框架
		11 款最好 CSS 框架 让你的网站独领风骚 网页设计和发展领域已经成为竞争激烈的虚拟世界.想要在网络的虚拟世界中生存,仅有一堆静止的在线网络应用是远远不够的,网页必须要有很多功能,配以让人无法抗拒 ... 
- 分享一款基于aui框架的图文发布界面
		本文出自APICloud官方论坛, 感谢论坛版主 川哥哥 的分享. 分享一款基于aui框架的图文发布界面,可以添加多张图可以删除,类似qq空间发布说说,没做服务器后端,只演示前端操作.需要用到UIMe ... 
- Mac读写ntfs软件究竟哪一款适合我们?
		生活中我们免不了会使用一些硬盘设备来存储文件或者是数据,然而绝大多数的移动硬盘都是ntfs格式.Mac读写ntfs软件有很多,究竟哪一款适合我们? 首先,我们一起了解一下什么是ntfs格式.ntfs, ... 
- SZhe_Scan碎遮:一款基于Flask框架的web漏洞扫描神器
		SZhe_Scan碎遮:一款基于Flask框架的web漏洞扫描神器 天幕如遮,唯我一刀可碎千里华盖,纵横四海而无阻,是谓碎遮 --取自<有匪> 写在前面 这段时间很多时间都在忙着编写该项目 ... 
- rtvue-lowcode:一款基于uniapp框架和uview组件库的开源低代码开发平台
		rtvue-lowcode低代码开发平台 rtvue-lowcode一款基于uniapp框架和uview组件库的低代码开发平台,项目提供可视化拖拽编辑器,采用MIT开源协议,适用于app.小程序等项目 ... 
- NodeJS全栈开发利器:CabloyJS究竟是什么
		CabloyJS CabloyJS是一款顶级NodeJS全栈业务开发框架, 基于KoaJS + EggJS + VueJS + Framework7 文档 官网 && 文档 演示 PC ... 
- 加速Web开发的9款知名HTML5框架
		与手工编码比起来,HTML5框架在准确性和正确率方面给予了保证.大多数HTML5框架都会有一个组合或者包含一些额外的组件,比如jQuery Scripts.CSS3样式表则以改善多媒体特征的功能性和响 ... 
随机推荐
- 微信小程序插件组件-Taro UI
			微信小程序组件使用以下官网查看 ↓ ↓ ↓ https://taro-ui.jd.com/#/docs/fab 
- dev分支代码覆盖master分支代码
			将develop分支上的代码完全覆盖master分支, 1. 切换到master分支 git checkout master 2. 执行以下命令 git reset --hard origin/dev ... 
- 在uniapp的节流函数
			为了解决同一个人连续多次的点击同一个事件会造成的问题,js解决的方法有防抖和节流,防抖和节流都是在一定的时间上控制次数 节流是在定义的时间内连续点击多次事件,只会执行一次 在uniapp的工具文件夹u ... 
- String类为什么被设计成不可变类
			1.享元模式: 1.共享元素模式,也就是说:一个系统中如果有多处用到了相同的一个元素,那么我们应该只存储一份此元素,而让所有地方都引用这一个元素. 2.Java中String就是根据享元模式设计的,而 ... 
- Java的虚拟线程(协程)特性开启预览阶段,多线程开发的难度将大大降低
			高并发.多线程一直是Java编程中的难点,也是面试题中的要点.Java开发者也一直在尝试使用多线程来解决应用服务器的并发问题.但是多线程并不容易,为此一个新的技术出现了,这就是虚拟线程. 传统多线程的 ... 
- STL空间分配器源码分析(一)
			一.摘要 STL的空间分配器(allocator)定义于命名空间std内,主要为STL容器提供内存的分配和释放.对象的构造和析构的统一管理.空间分配器的实现细节,对于容器来说完全透明,容器不需关注内存 ... 
- Java学习day10
			在类内定义的类就称为内部类.内部类可以访问外部类的所有成员,外部类要访问内部类,必须先建立对象 内部类分为成员内部类和局部内部类 外界创建public修饰的成员内部类对象的格式:外部类名.内部类名 对 ... 
- 改造@vue/cli项目为服务端渲染-ServerSideRender
			VUE SEO方案二 - SSR服务端渲染 在上一章中,我们分享了预渲染的方案来解决SEO问题,个人还是很中意此方案的,既简单又能解决大部分问题.但是也有着一定的缺陷,所以我们继续来看下一个方案--服 ... 
- java自带的四种线程池
			java预定义的哪四种线程池? newSingleThreadExexcutor:单线程数的线程池(核心线程数=最大线程数=1) newFixedThreadPool:固定线程数的线程池(核心线程数= ... 
- zookeeper篇-zoo.cfg配置
			点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. zoo.cfg即/usr/local/java/zookeeper/co ... 
