手把手和你一块儿学习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 排版

相关文章
相关标签/搜索