一 Egg.js 是什么
-
Eggjs是《阿里旗下的开源产品》 基于 Nodejs 和 Koa,是一个Nodejs 的企业级应用开发框架。可以帮助开发者快速开发高质量的企业级项目。
-
Eggjs 基于ES6、Es7、Koa 使得 Nodejs 具有更规范的开发模式、更低的学习成本、更优雅的代码、更少的开发成本、更少的维护成本。它为企业级框架而生。
二 设计原理
我们个人在平时的开发中,肯定是希望越方便越好,不喜欢有那麽多的约束 ,开发起来也快 ,这样非常利于个人做项目,但我们大多数的人还都是在公司开发 做的还都是公司的项目 太灵活对于公司来说是非常不友好的 后期维护起来成本太高 这时候 egg 就应运而生
Egg 奉行『约定优于配置』,按照一套统一的约定进行应用开发,团队内部采用这种方式可以减少开发人员的学习成本,开发人员不再是『钉子』,可以流动起来。没有约定的团队,沟通成本是非常高的,比如有人会按目录分栈而其他人按目录分功能,开发者认知不一致很容易犯错。但约定不等于扩展性差,相反 Egg 有很高的扩展性,可以按照团队的约定定制框架。使用 Loader 可以让框架根据不同环境定义默认配置,还可以覆盖 Egg 的默认约定
Egg 的插件机制有很高的可扩展性,一个插件只做一件事。Egg 通过框架聚合这些插件,并根据自己的业务场景定制配置,这样应用的开发成本就变得很低。、
三 与社区框架的差异
- Express 是Node.js 社区广泛使用的框架,简单且扩性展性强,非常适合做个人项目。但框架本身缺少约定,标准的 MVC 模型会有各种千奇百怪的写法。
- Egg.js相比 Express Koa 更规范一些,Egg.js 按照约定进行开发、内置多进程管理、基于 Koa 开发,性能优异、具有高度可扩展的插件机制、框架稳定、并提供基于Egg.js 定制上层框架的能力。
- Egg.js 【奉行约定优于配置】的框架,按照同一套同意的约定进行开发
Express 官网 www.expressjs.com.cn/
koa 官网 www.koajs.com.cn/
Egg 官网 www.eggjs.org/
二 Egg.js 的发展历史
(1) 2013 年蚂蚁的 chair 框架,可以视为 egg 的前身。
(2) 2015年11 月,在苏干的召集下,阿里各 BU 的前端骨干齐聚黄龙,闭门共建。
(3) 2016 年初,各BU 的基础 web 框架完成升级,在同一套规范的基础上进行差异化定 制。
(4) 2016 年中,广泛使用在绝大部分阿里的前端 Node js 应用。
(5) 2016 年 09 月,在 JSConf China 2016 上亮相并宣布开源。
(6) 2017 年初,官网文档 egg- 为企业级框架和应用而生 亮相,并将在本月发布 egg@1.0 版本。
(7) 2017 年12月左右EBg 社区版 2.0正式发布,性能提升 30%,基于 koa2拥抱 Async
直到今年8月21日 3.0版正式发布 最近的一次发布是在今年的9月28日 发布了3.33版本 经过了这麽多年的沉淀 Egg.js已经非常成熟 下面就让我们开始Egg的学习之旅
三 搭建环境
需要安装node版本8.0以上的稳定版本及npm 6.1版本以上
四 初始化项目
直接使用脚手架,只需几条简单指令,即可快速生成项目
$ mkdir egg-example && cd egg-example
$ npm init egg --type=simple
$ npm i
project name 这个是询问你是否叫这个名称
project description 询问你是否添加描述 说明
project author 询问你是作者名称
cookie security keys (1668131594671_4310) 询问你是否用它生成的cookie 这个到时候也会生成在config\config.default.js文件夹中
启动项目:
$ npm start / npm run dev
$ open http://localhost:7001
在浏览器中打开 http://localhost:7001 出现上图中的 hi egg 就算是创建成功了
五 项目目录介绍
(1)app 项目的主目录 项目中的代码主要都写在这个里面 它下面有两个文件夹 controller及public, controller 控制器目录 所有的控制器都写在这个里面。
public 公用的。 router 路由文件 项目中的路由都写在这个里面
(2)config 项目的配置目录 比如插件相关的 它中有两个文件 config.default 系统项目配置文件 plugin 插件配置文件
(3) logs 项目的运行日志文件 随着项目的运行 会越来越多
(4) run项目启动时生成的零时文件 保证项目的正确运行
(5) test项目的单元测试文件
(6).eslintignore/.eslintrc 代码格式化相关的配置文件
(7).gitignore git 管理配置文件 不需要git管理的写在这个里面
(7)jsconfig.json js配置文件可以被所有目录下的js进行个性化的支持
六 Mysql数据库连接配置
安装Mysql数据库 npm i --save egg-mysql
// 在config/plugin.js中配置
exports.mysql = {
enable: true, // 开启这个插件的意思
package: 'egg-mysql',
};
// 在config.default中配置
exports.mysql = {
// 是否加载到 app 上,默认开启
app: true,
// 是否加载到 agent 上,默认关闭 可以不写
agent: false,
// 单数据库信息配置
client: {
// host
host: '127.0.0.1',
// 端口号
port: '3306',
// 用户名
user: 'root',
// 密码
password: 'root',
// 数据库名
database: 'test',
},
};