Zova 是一款支持 IOC 容器的 Vue3 开源框架。有了 IOC 容器的加持,定义响应式状态不再需要ref/reactive
,也不再需要ref.value
Zova 是在开发 Cabloy5 的过程中孵化出的独立的前端框架,采用 Typescript,采用通用设计,可搭配任何 UI 库使用
凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写 | Atwood 定律
目前市面上出现的大多数与 NodeJS 相关的框架,基本都将 NodeJS 定位在工具层
、聚合层
、中间层
、代理层
,很少在业务层面进行深耕,认为这是 JAVA 的领域,NodeJS 不适合。这种思潮明显是与Atwood 定律
相悖的
如果您想感受不同的 NodeJS 全栈开发体验,一定要试试自带工作流引擎的 CabloyJS 全栈开源框架。为了提升业务层面的开发效率和开发体验,CabloyJS 在前端和后端均提供了大量实用的工具和组件
在 NodeJS 开发领域,目前(截止 2022 年 1 月)存在以下几个痛点问题:
随着移动终端的普及和升级换代,大量业务场景都需要移动端的支持,比如管理层需要通过手机查看统计数据、审核业务单据;运维人员通过手机远程查看服务器状态,并进行调整优化
我们知道,市面上大多数中后台管理系统,都是优先适配 PC 端,然而移动端体验却不佳,处于勉强可用,但不好用
的阶段
此外,大多数XXX Admin框架
和中后台管理框架
其本质是代码模版
。在具体开发项目时,直接在代码模版
中编写代码。这样,虽然修改起来很直接,但是不利于模版的持续升级和优化;也不利于业务代码的持续沉淀和迁移(至其他项目)。因此,当把代码模版
从源码仓库下载下来之后,修改三分之一
,增加三分之一
,删减三分之一
,从此就与代码模版
的后续升级版本绝缘了
如果单说 CRUD,大多数编程语言的开发框架都可以轻松实现,这不应该成为 NodeJS 开发业务系统的核心优势。若要让 NodeJS 深入业务领域的开发,工作流引擎
是一个绕不过去的核心组件
大多数业务表单不仅仅是一些字段的简单组合和增删改查,不同的业务都有自己独特的业务诉求,往往需要前端界面的定制和后端逻辑的定制。拖拽式低代码平台,对于业务人员而言没有足够的工具进行深入定制,对于研发人员而言也没有足够的机制深入开发
许多拖拽式低代码平台认识到了这一点,所以针对不同的业务场景提供官方预配置的套装解决方案,这同样也把业务人员和研发人员置于不上不下
的尴尬境地,成为食之无味 弃之可惜
的鸡肋平台
基于上述分析的问题,CabloyJS 实现了如下功能三大亮点
和架构三大亮点
CabloyJS 首创pc = mobile + pad
的自适应布局机制:只需要一套代码,mobile端
达到原生效果,同时将mobile端
的操控体验和开发模式无缝带入pc端
请大家分别在 PC 端和手机端打开演示链接
: https://test.cabloy.com/ ,来体会与众不同的自适应机制
通过在一处定义JSON Schema
,就可以同时支持前端的表单自动渲染
和后端的数据验证
,既能开箱即用又可灵活定制
CabloyJS 充分利用 JS 语言的灵活性和 JSON 格式的便捷性,提供的 NodeJS工作流引擎
远比 JAVA 领域的Activiti
简洁易用
比如,我们一般只知道如何使用Activiti
中提供的活动节点
和边界事件
,却很少有途径来了解如何开发自定义的活动节点
和自定义的边界事件
。由于Activiti
的架构繁杂,大多数人甚至不愿意尝试去阅读源码。但是 CabloyJS 提供的工作流引擎
却可以轻松的定制所有的工作流元素,而且源码层次清晰,易于学习
作为一款面向开发者的低代码开发平台,为了将低代码的开箱即用
和专业代码的灵活定制
有机融合,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 后端代码多租户SAAS业务系统
后台业务管理系统
,如OA、CRM、ERP、电商,等等JAMStack
架构的CMS内容管理系统
,支持SEO优化,如博客、技术文档、社区、知识店铺,等等后台业务管理系统
,再延伸开发CMS内容管理系统
;也可以反过来,先开发CMS内容管理系统
,再延伸开发后台业务管理系统
Cordova
开发各类App应用,支持IOS、AndroidElectron
开发桌面应用信息孤岛
的问题Uniapp小程序
开发后端API接口CabloyJS从2016年启动开发,主要历经两个研发阶段:
EggBornJS关注的核心就是模块化体系
与模块隔离
,并以此实现一套完整的全栈开发框架
比如模块egg-born-front
是框架前端的核心模块,模块egg-born-backend
是框架后端的核心模块,模块egg-born
是框架的命令行工具,用于创建项目骨架
这也是为什么所有业务模块都是以
egg-born-module-
为命名前缀的原因
EggBornJS只是一个基础的全栈开发框架,如果要支持业务的快速开发,还需要考虑许多与业务相关的支撑特性,如:工作流引擎
、用户管理
、角色管理
、权限管理
、菜单管理
、参数设置管理
、表单验证
、登录机制
,等等。特别是在前后端分离的场景下,对权限管理
的要求就提升到一个更高的水平
CabloyJS在EggBornJS的基础上,提供了一套核心业务模块,从而实现了一系列业务支撑特性,并将这些特性进行有机的组合,形成完整而灵活的上层生态架构,从而支持具体的业务开发进程
有了EggBornJS,从此可复用的不仅仅是组件,还有业务模块
有了CabloyJS,您就可以快速开发各类业务应用
凡是可以用JavaScript来写的应用,最终都会用JavaScript来写 | Atwood定律
相信,Javascript的深度探索者都会被这句名言激发,共同努力,为Javascript生态添砖加瓦,构建更繁荣的应用生态
CabloyJS正是对这一名言的探索之作。欢迎您也加入CabloyJS的社区生态,一起促进Javascript的繁荣与应用
这个名称的由来比较简单,因为有了Egg(后端框架),所以就有了EggBorn。有一部动画片叫《天书奇谭》,里面的萌主就叫“蛋生”,我很喜欢看(不小心暴露了年龄😅)
Cabloy来自蓝精灵的魔法咒语,拼对了Cabloy这个单词就会有神奇的效果。同样,CabloyJS是有关化学的魔法,基于模块的组合与生化反应,您将实现您想要的任何东西
MIT,免费商用