Cabloy.js:基于EggBorn.js开发的一款顶级Javascript全栈业务开发框架
发布于 6 年前 作者 zhennann 2852 次浏览 来自 分享

文档

演示

cabloy-demo-qrcode.png

EggBorn.js是什么

EggBorn.js是一款顶级Javascript全栈开发框架。前端采用Vue.js + Framework7 + Webpack,后端采用Koa.js + Egg.js,数据库采用mysql。 EggBorn.js在纵向上,将前端和后端打通,形成一个有机的整体,避免前端和后端各自为政的状况; EggBorn.js在横向上,提炼出“业务模块化”的代码组织模式,通过不同的模块组合实现业务开发,也为大型Web应用不断增长的业务需求提供有力的基础架构。

再谈Cabloy.js

EggBorn.js只是一个基础的全栈开发框架,如果要进行业务开发,还需要考虑许多与业务相关的支撑特性,如:用户管理、角色管理、权限管理、菜单管理、参数设置管理、表单验证、登录机制,等等。特别是在前后端分离的场景下,对权限管理的要求就提升到一个更高的水平。 Cabloy.js在EggBorn.js的基础上,通过“业务模块”的方式,实现一系列支持特性,并将这些特性进行有机的组合,形成完整而灵活的上层生态架构,从而支持具体的业务开发进程。

Cabloy.js架构图

cabloy.png

先决条件

凡是可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写。 ——Atwood定律

相信,Javascript的深度探索者都会被这句名言激发,共同努力,为Javascript生态添砖加瓦,构建更繁荣的应用生态。 Cabloy.js正是对这一名言的探索之作。Cabloy.js不重复造轮子,而是采用业界最新的开源技术,进行全栈开发的最佳组合。因此,也深度建议您在继续后面的阅读之前,最好能对以下框架有所了解和认知。

Cabloy名字的由来

Cabloy来自蓝精灵的魔法咒语,拼对了Cabloy这个单词就会有神奇的效果。同样,Cabloy.js是有关化学的魔法,基于原子的组合与生化反应,您将实现您想要的任何东西。

Cabloy特性

  • 统一的原子数据管理
  • 统一的用户角色权限管理
  • 对多种运行环境的精细支持
  • 支持多域名多实例运行
  • 灵活的测试驱动开发
  • 内置众多核心模块,提供大量核心特性

有了Cabloy.js,您就可以快速开发各类业务应用。

EggBorn特性

  • 前后端分离:前后端分离开发,深度解耦
  • 业务模块化:页面组件按模块组织
  • 加载方式灵活:模块既可异步加载,也可同步加载
  • 模块高度内聚:模块包括前端页面组件和后端业务逻辑
  • 参数配置灵活:模块中的前后端可以单独进行参数配置
  • 国际化:模块中的前后端均支持独立的国际化
  • 模块隔离:模块的页面、数据、逻辑、路由、配置等元素均进行了命名空间隔离处理,避免模块之间的变量污染与冲突
  • 超级易用的事务处理:只需在路由记录上配置一个参数,即可完美实现数据库的事务处理。
  • 渐进式开发:由于模块的高度内聚,可以将业务以模块的形式沉淀,在多个项目中重复使用,既可贡献到npm开源社区,也可部署到公司内部私有npm仓库。

有了EggBorn.js,从此可复用的不仅仅是组件,还有业务模块。

快速开始

安装

$ npm install -g egg-born

新建项目

$ egg-born cabloy-demo --type=cabloy
$ cd cabloy-demo
$ npm i

配置MySQL

src/backend/config/config.unittest.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: '127.0.0.1',
        port: '3306',
        user: 'root',
        password: '',
        database: 'sys',
      },
    },
  };

src/backend/config/config.local.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: '127.0.0.1',
        port: '3306',
        user: 'root',
        password: '',
        database: 'sys',
      },
    },
  };

src/backend/config/config.prod.js

  // mysql
  config.mysql = {
    clients: {
      // donnot change the name
      __ebdb: {
        host: '127.0.0.1',
        port: '3306',
        user: 'root', // 'travis',
        password: '',
        database: '{{name}}',
      },
    },
  };

测试

$ npm run test:backend

运行

启动后端服务

$ npm run dev:backend

启动前端服务

$ npm run dev:front

GitHub贡献

有任何疑问,欢迎提交 issue

回到顶部