學習express.js原始碼的方法
儘管有Hapi,Koa等有力的競爭者,express.js依然是非常流行的nodejs web伺服器框架,畢竟它早於2007年就已經在開發了。
學習expressjs的原始碼的好處自然不少。
它可以幫你深刻理解HTTP協議,這個協議是做前端後端都必然需要學習的協議,是透徹理解現在很多程式碼的關鍵。如果你看過了HTTP類的書籍,比如《HTTP小書》,自然需要找一個像樣的程式碼一試身手,驗證自己的所學,那麼expressjs一定不會讓你失望。
如果你某天看了關於bind、apply等函式的使用方法,那麼在這裡你可以看到更多實際場景對函式的使用。
要是你基於expressjs做Web開發的話,那麼,作為一個開發者,多多少少是對expressjs的原理比較好奇的。閱讀expressjs原始碼可以幫你實現你的好奇心。
本文會推薦一些expressjs的原始碼分析文章,可以幫助更快的,更加全方位的理解研讀之。
Express原始碼學習-路由篇 作者:等你下課。express.js的關鍵功能體現在路由的實現上,這一模組也是一個難點,本文專門針對路由實現做分析,其中的圖也很好的幫助開發者理解路由的內部資料結構,按圖索驥,更好的在原始碼中漫遊。https://juejin.im/post/5ab545a66fb9a028b92d15e7
express原始碼分析之Router 作者 leijianning 這是在cnodejs網站上被設定精華的原始碼解析文章,儘管主要分析路由,但是它的App部分分析也不錯,文字簡練表達直接,是一片不可多得的好文章。其中動態建立get,post函式的程式碼解析很到位。https://cnodejs.org/topic/5746cdcf991011691ef17b88
對express中next函式的一些理解 作者 leijianning 來自同一作者的解析,依然是講解路由,但是專門講解next函式,內個我們在路由中有時候會呼叫到它,還會通過傳遞引數而跳過route,或者整個router的函式。這個函式使用了閉包,實現非常的有技巧,但是也因此令程式碼非常難以理解。
express 原始碼閱讀 作者:w_z_c 。他是通過利用expressjs現在的實現手法,經過幾個迭代來完成對它的理解。這個思路非常贊。以下為作者原話。“網路上關於原始碼的分析已經數不勝數,這篇文章準備另闢蹊徑,仿製一個express的輪子,通過測試驅動的開發方式不斷迭代,正向理解express的程式碼”https://juejin.im/post/59c0ef425188257e934966ad
文章作者的github,大家不妨去star,以示支援。
- leijianning https://github.com/leijianning
- w_z_c https://github.com/WangZhechao
相關文章
- 手寫Express.js原始碼ExpressJS原始碼
- 原始碼學習原始碼
- Netty原始碼學習系列之5-NioEventLoop的run方法Netty原始碼OOP
- Netty原始碼學習系列之4-ServerBootstrap的bind方法Netty原始碼Serverboot
- 從原始碼學習設計模式之模板方法原始碼設計模式
- fishhook原始碼學習Hook原始碼
- MMKV原始碼學習原始碼
- vue原始碼學習Vue原始碼
- 【原始碼學習】ThreadLocal原始碼thread
- EventBus原始碼學習原始碼
- ObjectMapper原始碼學習ObjectAPP原始碼
- express原始碼學習Express原始碼
- go原始碼學習Go原始碼
- 學習HashMap原始碼HashMap原始碼
- Vue原始碼學習(十三):實現watch(一):方法,物件Vue原始碼物件
- async-validator 原始碼學習筆記(六):validate 方法原始碼筆記
- Java容器原始碼學習--ArrayList原始碼分析Java原始碼
- Vue 原始碼學習(一)Vue原始碼
- Okio 框架原始碼學習框架原始碼
- java原始碼學習-SpliteratorJava原始碼
- jQuery原始碼學習之$()jQuery原始碼
- vue observer 原始碼學習VueServer原始碼
- 來聊聊原始碼學習原始碼
- 原始碼學習之EllipsizingTextView原始碼TextView
- EOS原始碼學習系列原始碼
- 精讀《原始碼學習》原始碼
- PHP 原始碼加密學習PHP原始碼加密
- Mybatis 原始碼學習(二)MyBatis原始碼
- 學習RadonDB原始碼(二)原始碼
- 學習RadonDB原始碼(一)原始碼
- Masonry 原始碼學習整理原始碼
- VeraCrypt原始碼學習-序原始碼
- java原始碼學習-AbstractSequentialListJava原始碼
- 從shiro原始碼角度學習工廠方法設計模式原始碼設計模式
- 「從原始碼中學習」Vue原始碼中的JS騷操作原始碼VueJS
- 【菜鳥讀原始碼】halo✍原始碼學習 (一)原始碼
- 一個學習 Koa 原始碼的例子原始碼
- Bootstrap外掛modal原始碼的學習boot原始碼