Better

Ethan的博客,欢迎访问交流

egg初探

简单了解一下 egg。

简介

egg是基于Koa封装的,所以Koa支持的特性在egg中同样支持。

egg-init

官方提供的脚手架,帮助我们快速常见egg项目

常用对象

Application:一个应用只会实例化一个,在它的上面可以挂载一些全局方法或属性

Context:请求级别对象,一个请求的生命周期内,框架会实例化一个Context,这个对象封装了这次请求的所有信息

Request:提供了一系列的方法来获取HTTP的信息

Response:提供了一系列的方法来设置HTTP的信息

开发模型

Controller,框架提供了一个Controller基类,并且约定放置在app/controller目录下,这一层主要是对用户请求参数进行处理,Controller的上下文中挂载了很多有用的对象,因此推荐所有Controller都继承该基类。

Service,框架提供了一个Service基类,并且约定放置在app/service目录下,这一层主要解决在复杂业务场景下对逻辑的封装,比如查询数据库,调用第三方服务(Github登录),因此推荐所有Service都继承该基类。

Helper: 用来提供一些使用的实用函数。可以将一些常用的动作抽象为helper.js里面的一个独立函数。Helper跟Controller基类有一样的属性,也会在每次请求时实例化。

Config: 所有框架、插件和应用级别的配置都可以通过Config对象获取到。

Logger: 日志

Middleware,我们约定一个中间件放置在app/middleware目录下,如果你想它的能力可以应用在整个Web应用中,那么就需要配置在config.xxx.js文件中。如果仅仅是应用在请求级别上,那么需要在具体的路由上进行配置

Router,它主要是来约定描述请求URL和具体承担执行动作的controller,框架约定了app/router.js来描述统一的路由贵族。

定时任务,它主要是来处理一些需要定时的任务处理,框架约定放置在app/schedule目录下

单元测试,这一层的目的是对逻辑的测试检验,提供健壮性的验证,框架约定放置在app/test目录下

框架的扩展能力,它指明了Application,Context,Request,Response,Helper是可以进行扩展的,我们可以增加这些对象的api,来进一步加强框架的能力

安全

框架本身针对 Web 端常见的安全风险内置了丰富的解决方案。

  • 利用 extend 机制扩展了 Helper API, 提供了各种模板过滤函数,防止钓鱼或 XSS 攻击
  • 常见 Web 安全头的支持。可以针对某一路径开启或忽略安全校验
  • CSRF 的防御方案
  • 灵活的安全配置,可以匹配不同的请求 url
  • 可定制的白名单,用于安全跳转和 url 过滤
  • 各种模板相关的工具函数做预处理
  • 在框架中内置了安全插件 egg-security, 提供了默认的安全实践

Refer



留言

瑶哈哈
2018-06-14 22:06

不可以,哼