Node企业级框架和应用Egg.js 入门
Egg.js 缩写为 Egg,是阿里开源的企业级 Node.js 框架,专注于企业级框架和应用而生。Egg特性:提供基于 Egg 定制上层框架的能力,高度可扩展的插件机制,内置多进程管理,基于 Koa 开发,性能优异,框架稳定,测试覆盖率高,渐进式开发。下面雷雪松带大家一起来快速入门Node 企业级框架和应用Egg.js 。
1、Egg 脚手架搭建
[cc lang=”bash” escaped=”true”]$ mkdir egg-demo && cd egg-demo
$ npm init egg –type=simple
$ npm i[/cc]
2、Egg目录结构
app/router.js 用于配置 URL 路由规则。
app/controller/** 用于解析用户的输入,处理后返回相应的结果。
app/service/** 用于编写业务逻辑层,可选,建议使用。
app/middleware/** 用于编写中间件,可选。
app/public/** 用于放置静态资源,可选。
app/extend/** 用于框架的扩展,可选。
config/config.{env}.js 用于编写配置文件。
config/plugin.js 用于配置需要加载的插件。
test/** 用于单元测试。
app.js 和 agent.js 用于自定义启动时的初始化工作,可选,。
app/public/** 用于放置静态资源,可选。
app/schedule/** 用于定时任务。
app/view/** 用于放置模板文件,可选。
app/model/** 用于放置领域模型,可选。
3、Egg 内置基础对象
Application
Application 是全局应用对象,在一个应用中,只会实例化一个,它继承自 Koa.Application,在它上面我们可以挂载一些全局的方法和对象。我们可以轻松的在插件或者应用中扩展 Application 对象。
Context
Context 是一个请求级别的对象,继承自 Koa.Context。在每一次收到用户请求时,框架会实例化一个 Context 对象,这个对象封装了这次用户请求的信息,并提供了许多便捷的方法来获取请求参数或者设置响应信息。框架会将所有的 Service 挂载到 Context 实例上,一些插件也会将一些其他的方法和对象挂载到它上面(egg-sequelize 会将所有的 model 挂载在 Context 上)。
Request & Response
Request 是一个请求级别的对象,继承自 Koa.Request。封装了 Node.js 原生的 HTTP Request 对象,提供了一系列辅助方法获取 HTTP 请求常用参数。Response 是一个请求级别的对象,继承自 Koa.Response。封装了 Node.js 原生的 HTTP Response 对象,提供了一系列辅助方法设置 HTTP 响应。
Controller
框架提供了一个 Controller 基类,并推荐所有的 Controller 都继承于该基类实现。
Service
框架提供了一个 Service 基类,并推荐所有的 Service 都继承于该基类实现。
Helper
Helper 用来提供一些实用的 utility 函数。它的作用在于我们可以将一些常用的动作抽离在 helper.js 里面成为一个独立的函数,这样可以用 JavaScript 来写复杂的逻辑,避免逻辑分散各处,同时可以更好的编写测试用例。
Config
可以通过 Config 对象获取到所有框架、插件和应用级别的配置。
Logger
框架内置了功能强大的日志功能,可以非常方便的打印各种级别的日志到对应的日志文件中,每一个 logger 对象都提供了 4 个级别的方法:logger.debug()、logger.info()、logger.warn()、logger.error()。
Subscription
订阅模型是一种比较常见的开发模式,譬如消息中间件的消费者或调度任务。因此我们提供了 Subscription 基类来规范化这个模式。