文档
演示
- PC:http://demo.cabloy.org
- Mobile:
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架构图
先决条件
凡是可以用 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!