手把手和你一塊兒學習Koa源碼(一)——目錄結構

前言

本文的主要內容是經過描述做者本身學習koa源代碼的過程,來和你們一塊兒來學習koa的源碼,koa設計的初衷是 致力於成爲 web 應用和 API 開發領域中的一個更小、更富有表現力、更健壯的基石,說白了就是 小巧擴展性高因此koa的源碼閱讀起來也相對容易,若是你跟着個人文章學習 還學不會那麼必定是我寫的很差css

爲何要閱讀源碼

先說一下爲何要進行源碼的學習,主要就兩點:前端

  • 提高對koa甚至egg(基於koa)的理解
  • 提高自身編碼能力

我以爲看源碼的學習效率遠遠比單純的學習原理概念更高(僅僅爲了面試就當我沒說),若是你學習過不少js的原理、概念、高階用法可是發現實際項目中不多用到,經過閱讀源碼能夠在高質量的開源項目中學習大神們是怎麼應用這些技巧,若是你想提高你的編程能力,閱讀源代碼是很是好的的方式。node

準備工做

準備工做比較簡單git

  • 下載koa源碼:
git clone https://github.com/koajs/koa.git
複製代碼
  • 打開node文檔:http://nodejs.cn/api/
  • 啓動一個koa項目:不會啓動的本身上官網看一下 https://koa.bootcss.com/

注:本文不會先闡述koa思想,而是在代碼學習的過程當中學習思想github

總體結構

源碼已經準備就緒,咱們先來看一下目錄結構。
我在文章中會描述一些我學習koa源碼使用的方法,和我對其的理解,不免有錯漏請見諒。web

經過咱們打開了源碼的目錄結構,可是一會兒看到不少的文件夾和文件不知從何入手怎麼辦?

1、不要慌,先看看本身有哪些認識的文件面試

  • package.json(項目基本信息)
  • readme.md(基本介紹)
  • LICENSE、(開源協議相關)
  • History.md(歷史信息)
  • AUTHORS(貢獻者信息)
  • .gitignore(git忽略配置)

2、再看一些雖然可能沒有寫過可是必定很眼熟的編程

  • eslintrc.yml (eslint配置相關)
  • .editorconfig (編輯器格式約定)

那麼剩下的可能咱們不認識可是不妨礙根據上面的信息咱們推測,應該也都是某種配置或者信息記錄。json

3、咱們再來看一下文件夾相關的信息,仍是先從知道的下手。
文件夾不多除了.github外只有4個 test(測試相關)doc(文檔相關) 這兩個文件夾應該均可以看出來。
benchmarks可能不太常見,可是咱們google一下就發現是驗證性能以及基準數據用的對咱們想要閱讀源碼來講影響不大。
而lib通常在前端工程中都是被調用的程序集(不少狀況下都是將src編譯後生成)。api

瞭解了目錄信息,從哪一個文件看起

經過咱們看到一個項目都是從 package.json 看起

咱們經過package.json 能夠得到基本描述信息、腳本信息、依賴 等等。
(若是對package.json不瞭解的同窗能夠先找一下文檔簡單學習一下)
打開package.json一眼就看到對如今的咱們最重要的信息 位於第5行的

"main": "lib/application.js"
複製代碼

找到了入口文件,位於lib目錄下的application.js

lib目錄

經過上面的分析咱們瞭解到其餘的目錄都是測試或者文檔相關的,那麼這個lib目錄此時就顯得很是關鍵。

打開lib目錄發現這個目錄沒有子目錄且只有4個文件。 這個時候咱們先啓動一個最基礎的koa項目--hello world

const Koa = require('koa');
const app = new Koa();  app.use(async ctx => {  ctx.body = 'Hello World'; });  app.listen(3000); 複製代碼

同時咱們知道入口文件 是 lib/application.js,由此咱們得知上面代碼中第一行 const Koa = require('koa')導出的Koa 指的就是這個 application.js 文件。

點開 application.js 文件發現是沒有編譯過的js文件(一般lib中的文件都是src文件編譯過的不具備可讀性),而後我打開了Koa項目(不是源碼項目)中的node_module中的koa文件,發現那裏面的lib文件和源碼中的徹底同樣。
至此,咱們能夠肯定Koa項目是不編譯的,導出使用的就是源碼,因此沒有src目錄只有lib目錄,lib目錄的內容就是源碼。並且只有4個文件加一塊兒只有不到2000行,真的是足夠小巧精幹。

總結

本篇目錄結構咱們先分析到這裏,下一篇會講述關於application.js的內容,本文徹底按照做者本身學習源碼的過程進行描述,文筆很差讀起來可能會有一點流水帳,可是做者會努力描述清楚,而且把閱讀源碼的一些方法技巧分享,請收藏點贊支持。

相關文章

手把手和你一塊兒學習Koa源碼(一)——目錄結構

手把手和你一塊兒學習Koa源碼(二)——Appilication

本文使用 mdnice 排版

相關文章
相關標籤/搜索