关于全栈:一文讲透CabloyJS全栈框架的来龙去脉

本文受众

咱们做软件开发,就好比是建造一幢幢屋宇,一座座桥梁,既能够是南方宫殿的巍峨,也能够有北方庭院的雅致,更能够是横跨群山的峻险与孤悬。那么,不同的语言、不同的框架也都由其内在的秉质吸引着一批粉丝,坚定不移的耕耘,营造出不同的生态,呈现出不同的开发格调和开发体验。正如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,收费商用