为企业级框架和应用而生,希望由 Egg.js 孕育出更多上层框架,帮助开发团队和开发人员降低开发和维护成本。
因为 egg
是基于koa 2x开发的,所以官方还特别强调了与其它两个社区框架 Express
与 Sails
的差异点
Express 是 Node.js 社区广泛使用的框架,简单且扩展性强,非常适合做个人项目。但框架本身缺少约定,标准的 MVC 模型会有各种千奇百怪的写法。Egg 按照约定进行开发,奉行『约定优于配置』,团队协作成本低。
Sails 是和 Egg 一样奉行『约定优于配置』的框架,扩展性也非常好。但是相比 Egg,Sails 支持 Blueprint REST API、WaterLine 这样可扩展的 ORM、前端集成、WebSocket 等,但这些功能都是由 Sails 提供的。而 Egg 不直接提供功能,只是集成各种功能插件,比如实现 egg-blueprint,egg-waterline 等这样的插件,再使用 sails-egg 框架整合这些插件就可以替代 Sails 了。
提供基于 Egg 定制上层框架的能力
高度可扩展的插件机制
内置多进程管理
基于 Koa 开发,性能优异
框架稳定,测试覆盖率高
渐进式开发
怎么快速的用 egg
快速的进行开发呢,我们选择使用其官方提供的内置脚手架,推荐egg-init
。
创建项目
首先安装 egg
(npm i egg-init -g
), 然后初始化项目 egg-init egg-example --type=simple
。
目录结构
进入生成的 egg-example
目录,其结构如下:
egg-example ├── package.json(配置文件) ├── app | ├── router.js(路由文件) │ ├── controller │ | └── home.js(用户控制层) ├── config | ├── plugin.js(插件配置) | ├── config.default.js(默认配置) └── test └── app └── controller └── home.test.js(测试文件)
安装依赖之后我们就能够运行 npm run dev
在本地查看了。
在图中我们可以看到,程序已经正常的在本地跑了起来,打印出当前使用的版本以及当前的 agent_worker
并监听了7001这个端口。关于 agent
和 worker
以及 master
的详细不在这里具体介绍,有兴趣的童鞋可以移步官网。
编写程序
接下来我们就能在 controller
编写自己的业务逻辑代码了,为了保持 Controller```` 中的逻辑更加简洁,官方推荐增加
service层,什么是
Service呢,相信很多同学对它还很陌生,简单来说,
Service就是在复杂业务场景下用于做业务逻辑封装的一个抽象层。同时把业务逻辑进行封装之后还可以保持业务逻辑的独立性,抽象出来的
Service可以被多个
Controller``` 重复调用。并且将逻辑和展现分离,更容易编写测试用例。
这样一来,是否可以将之前写的微信公众号系统进行重构呢,在代码和整个架构上进行一个规范,赶紧动动手吧。
国内前端优秀的开发团队还有很多,但是阿里算是做的比较好的,至少他家的文档让我整体看来很舒服,而且逐渐把前端的一些概念开始扩展,融入了一些后端的思想。想想还有特别火热的 RxJs
系列,看来未来前端依旧会走在时尚的前流。
另外在学习的过程中发现问题我们可以给 egg
团队提 issue
的哇,或者有更好的解决方案可以提交 PR
,万一被合并了,这牛也可以吹半辈子了哈。
每周更新的文章,直接跳转去看https://cnodejs.org/topic/5a92ebb671327bb413bbfe38
Web最小系统,就是满足Web服务最小功能系统。对于最小功能的系统,不同Web开发程序员有不同的理解。从系统分层就可以有很多方式,裁剪成最小功能那就有很多的组合。在我的理解中,最小Web系统可以精简成一下两个元素。
HTTP Server
HTTP服务器,处理最基本请求(Request)和响应(Response)
Route Parser
路由解析器,处理不同请求URL的跳转页面或者返回数据
下一篇:《debian 配置防火墙》