Egg.js基础入门二:Service服务与插件
续接上篇~~~
接收参数
我们大多会把对于数据库的操作放到service服务中,然而对于数据库的操作的一些条件都是需要通过参数来确定的,所以在开始引入Service之前先说一下接收参数吧
在Egg中接收参数的方式与Koa是基本一致的,看一眼就能懂啦
Get请求参数
Gue请求我们可以通过query传参数也可以通过path来传递参数
先说一下query传递参数:
假设有路由如下
1 | // /app/router.js |
1 | // /app/controller/demo.js |
用path传参数需要在路由上进行定义
1 | // /app/router.js |
1 | // /app/controller/demo.js |
Post请求参数
post请求通过ctx.request.body接收参数,与koa一致
1 | // /app/controller/demo.js |
Service服务
Service是用于在复杂场景下用于对复杂业务逻辑封装的一个抽象层,所有和数据库交互的代码可以放到这里,这样做有几个好处:
- 保持Controller逻辑更加简单
- 保持业务逻辑的独立性,Service可以被多个Controller调用
- 将数据逻辑和展现逻辑分离,测试用例写起来更加简单
Egg要求我们所有的Service必须放到/app/service目录下,如果没有该目录可以自行创建
Service的代码实现与Controller很相似
在controller中可以通过上下文来使用service,使用方法为ctx.service.文件名.方法名
假设我们有一个service如下:
1 | // /app/service/demo.js |
接下来就可以在controller中使用Service服务来
1 | // /app/controller/demo.js |
插件
Egg提供了很多插件,我们可以去安装使用,也可以自己编写插件,插件的配置都大同小异,具体的用法要查看插件的文档了,我们拿ejs引擎来介绍一下配置方法
安装
egg提供的插件都是以egg-开头的,可以通过yarn或者npm进行安装
1 | yarn add egg-view-ejs |
配置
Egg的项目中有两个配置文件,一个是plugin.js,一个是config.default.js
毫无疑问plugin.js就是用来声明插件的,而config.default.js可以做很多中配置,不仅限于插件。
1 | // /config/plugin.js |
这样我们就声明了ejs插件,几乎所有插件都要在这里用这种形式去声明
我们还可以在config.default.js中对其做一些额外的配置
1 | // /config/config.default.js |
关于插件具体有哪些可配置项,就需要查看插件的文档了,在此不过多赘述。
Egg.js基础入门二:Service服务与插件
https://zhaolei-hu.github.io/2022/04/01/Egg-js基础入门二-Service服务与插件/