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

7次阅读

共计 5116 个字符,预计需要花费 13 分钟才能阅读完成。

本文受众

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

正文完
 0