接前一篇,阿里egg.js初體驗(一) 咱們繼續咱們的egg之旅。
咱們已經完成了對於項目結構的搭建,如今咱們須要開始業務的編寫。
注意到,目錄裏controller和service兩個文件夾,這裏也是咱們編寫業務邏輯的主要地方。node
controller:用於解析用戶的輸入,處理後返回相應的結果。
service:用於編寫業務邏輯層,能夠複用。git
假設咱們如今完成調用一個git rest api的二次開發工具,主要內容包括
查看用戶參與的項目,新建一個項目,管理項目人員等等。json
根據需求,service裏咱們須要直接調用git的api,顯然,就是須要一個curl的類型功能,egg提供了一個curl,它是經過對context類對擴展實現的,這樣在
service裏,咱們能夠直接經過以下方式訪問一個git rest api:segmentfault
const { data: idList } = await this.ctx.curl(`${gitUrl}/users`, { data: { id: '"$id"', }, dataType: 'json', });
這樣咱們就把用戶列表設置到idList裏。
下一步咱們須要在controller調用這個service:api
const userList = await ctx.service.git.list(id);
注意,egg中,全部模塊之間的調用,都是經過名字來調用的,若是咱們把以前的service導出爲:curl
module.exports = Git;
那麼,controller,就能經過this.ctx.service.git.methodName()來訪問到對應的service裏的方法了。在使用導出的模塊時,須要把導出的模塊名改成駝峯標準,且首字母變爲小寫。工具
回到controller中,
咱們能夠把獲取到的數據放到render的中進行渲染,而後把渲染後的結果發給遊覽器,或者,也能夠把數據直接賦值給ctx.body,而後以json方式返回。開發工具
這樣,一個簡單的node應用就算搭建完成了。this