koa的用法,這裡就不在列舉了。我覺得koa主要功能主要是下面幾個方面
1). 提供了中介軟體機制
2). 封裝了request/response,context物件
3). 使用了yield,提供了便利的流程控制,使非同步程式設計更優雅
4). 便捷的異常處理,使用try catch就可以捕獲程式中的異常,不需要考慮同步或者非同步的問題
console.log('start');
yield *next;
console.log('end');
})
koa會提供很多中介軟體,比如koa-router,koa-session,koa-bodyparse,koa-server等
//函式的入口部分
this.env = process.env.node_env || 'development';
this.subdomainoffset = 2;
this.middleware = ;
this.proxy = false;
this.context = object.create(context);
this.request = object.create(request);
this.response = object.create(response);
} listen真正的建立了乙個http server
中介軟體use方法, fn必須是乙個generator function, 可以通過'generatorfunction' == fn.constructor.name
if (!this.experimental)
this.middleware.push(fn);
return this;
};重要函式來啦,這裡只是分析this.experimental = false的情況
var fn = this.experimental
? compose_es7(this.middleware)
: co.wrap(compose(this.middleware));
//co是使用的tj的co模組,這裡先分析compose的函式用法
//compose 函式是將this.middleware陣列的函式進行乙個簡單的處理,保證每個函式都有後乙個函式的引用,具體**看下面的分析
可以將乙個generation function 進行轉換,使fn能夠自動執行
var self = this;
if (!this.listeners('error').length) this.on('error', this.onerror);
return function(req, res)).catch(ctx.onerror);
}};
compose **分析, compse是將middleware裡面的middleware都有下乙個函式的引用
至此,koa的原始碼已經分析完畢了function compose(middleware)
return yield *next;
}}
Koa原始碼分析
上篇文章寫了如何閱讀koa的原始碼,粗略的過了一下koa的原始碼,但是作為乙個沒有得出乙個具體的結論,中介軟體的執行原理也不清楚,這裡我們再仔細的過一遍koa的原始碼.首先還是先過一遍例子 const koa require koa ctx.body hello world 複製 起乙個web服務,...
Koa原始碼分析
先看看這個極簡的啟動 const koa require koa response ctx.body hello koa 我們在koa原始碼資料夾下建立index.js檔案,將上面的 寫入,並將require koa 換成require const koa require debugger ctx....
Koa 原始碼分析
閱讀原始碼可以很好地提高自身水平,從 會用 到 掌握原理 的過程,也是自身從前端菜鳥到中高階高階的過程,在不少面試過程中,也會問到你有沒有閱讀過原始碼等問題。該場 chat 將會為大家分享一下看似很複雜,其實超級簡單的 node.js koa 框架。主要會分享以下內容 koa 封裝原生 http 模...