接上一篇阿里初体验egg.js(一)继续我们的彩蛋之旅。我们已经完成了项目结构的搭建,接下来就要开始写业务了。注意目录下有controller和service两个文件夹,这也是我们写业务逻辑的主要地方。controller:用于解析用户的输入,处理后返回相应的结果。service:用来写业务逻辑层,可以复用。假设我们调用完一个gitrestapi二次开发工具,主要内容包括查看用户参与的项目、创建新项目、管理项目人员等。根据需求,我们需要直接调用服务中的gitapi。显然,我们需要一个curl类型的函数。Egg提供了一个curl,它是通过扩展context类来实现的。这样,在服务中,我们可以直接通过如下方式访问一个gitrestapi:const{data:idList}=awaitthis.ctx.curl(`${gitUrl}/users`,{data:{id:'"$id"',},数据类型:'json',});这样我们就把用户列表设置为idList。下一步,我们需要在控制器中调用这个服务:constuserList=awaitctx.service.git.list(id);注意在egg中,所有模块之间的调用都是按名称调用的。如果我们把之前的服务导出为:module.exports=Git;然后controller可以通过this.ctx.service.git.methodName()来访问service中对应的方法。使用导出模块时,需要将导出模块名称改为驼峰式,并将首字母改为小写。回到controller中,我们可以将获取到的数据放入render中进行渲染,然后将渲染结果发送给浏览器,或者,我们也可以直接将数据赋值给ctx.body,然后以json格式返回。这样一个简单的节点应用就搭建好了。
