Nodejs-Koa是一個乾淨的框架

關於koa

今天學習了plover的底層框架koa。nodejs框架用的最多的是express,社區也最大、資料比較全,簡單易上手,所以在我自己寫的一個音樂分享的網站中後臺框架用的是express。之前就聽說過koa是一個優雅的後臺框架,小而美,今天讀了讀相關介紹,搭了個最簡單的服務器,有點體會到爲什麼形容一個框架“優雅”、“美”。

裝飾器(Decorator)

書裏這麼說:裝飾器用於給對象在運行期間動態的增加某個功能,職責等,我曾經用裝飾器測過排序算法的速度,定義一個裝飾器有點麻煩,但挺好用。koa底層使用裝飾器函數,很多方法都要求傳入一個函數(普通函數或Generator函數)作爲實參。比如:注入中間件var router = require(‘koa-router’);app.use(router(app)); 這樣對注入的中間件進行了包裝。傳說ES7會支持這個特性。

生成器(Generator)

生成器是ES6裏異步的解決方案。koa使用ES6語法,很好的利用生成器進行異步編程,減少像express中那樣的回調,提高代碼可讀性和可維護性。

支持ES6

由於koa本身基於ES6的Generator,所以對ES6支持應該比較好。ES6很多新特性還是挺有用的。之前基於ES6寫React就遇到過部分ES6語法不支持問題。比如:如果用ES6就不支持mixin;用ES6語法爲對象添加方法,在組件中使用該方法作爲子組件click等事件的回調函數時,需要手動bind(this)

錯誤處理

nodejs編程的一個原則是錯誤處理優先,由於node的回調異步特性,無法通過try catch來捕捉所有的異常,很多回調的第一個參數都應該是err,express也是如此。nodejs有一個錯誤處理的中間件domain,它本身是一個EventEmitter,通過nodejs事件循環來查找錯誤,但有時候會遇到domain嵌套,很麻煩,想寫一個健壯的nodejs服務有時候很難,畢竟邏輯越複雜人越容易犯錯、忘東西。koa有error事件,可以監聽error並進行錯誤處理,簡單明瞭。

其他還有大家常說的koa很小,擴展性強等,不贅述。

正因爲以上幾點,koa給人一種乾淨利落的感覺,體積小、編程方式乾淨。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章