Cabloy.js:基于EggBorn.js开发的一款顶级Javascript全栈业务开发框架

文档

演示

EggBorn.js是什么

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

再谈Cabloy.js

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

Cabloy.js架构图

先决条件

凡是能够用 JavaScript 来写的应用,最终都会用 JavaScript 来写。 ——Atwood定律vue

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

Cabloy名字的由来

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

Cabloy特性

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

有了Cabloy.js,您就能够快速开发各种业务应用。git

EggBorn特性

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

有了EggBorn.js,今后可复用的不单单是组件,还有业务模块。github

快速开始

安装

$ npm install -g egg-born
复制代码

新建项目

$ egg-born cabloy-demo --type=cabloy
$ cd cabloy-demo
$ npm i
复制代码

配置MySQL

src/backend/config/config.unittest.jssql

// 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.jsnpm

// 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

相关文章
相关标签/搜索