简单了解一下 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, 提供了默认的安全实践
不可以,哼