当前位置: 首页 > 文档资料 > vsCode 使用指南 >

如何快速阅读源码?

优质
小牛编辑
142浏览
2023-12-01

学习5阶段

  • getting start 入门
  • guide 指南
  • doc 查api
  • 阅读源码
  • 向开源贡献代码

你该阅读源码?

上面已经说了,第四个阶段才是读源码

原因是,必须熟练才有用,不然读了也白扯

  • 熟练使用该模块
  • 熟练掌握npm
  • 熟练掌握nodejs语法

有了这个前提你就可以阅读了。

当然事情也不能绝对,没这些,你也可以看,从中找出有用的写法或者学习代码规范也是好的。

看目录结构(express框架)

express git:(master) X tree . -L 2 . ├── History.md ├── LICENSE ├── Readme.md ├── index.js ├── lib │   ├── application.js │   ├── express.js │   ├── middleware │   ├── request.js │   ├── response.js │   ├── router │   ├── utils.js │   └── view.js ├── node_modules │   ├── accepts │   ├── array-flatten │   ├── content-disposition │   ├── content-type │   ├── cookie │   ├── cookie-signature │   ├── debug │   ├── depd │   ├── escape-html │   ├── etag │   ├── finalhandler │   ├── fresh │   ├── merge-descriptors │   ├── methods │   ├── on-finished │   ├── parseurl │   ├── path-to-regexp │   ├── proxy-addr │   ├── qs │   ├── range-parser │   ├── send │   ├── serve-static │   ├── type-is │   ├── utils-merge │   └── vary └── package.json 29 directories, 11 files 

package.json

这是一个npm模块

  • dependencies
  • devDependencies
  • scripts
  • bin
  • main
  • repository
  • license
  • homepage

体会细节的差异

node_modules

放的是当前模块依赖的其他模块

index.js

npm有一个约定,如果你的项目主文件是index.js可以不在package.json里写明,如果是其他文件就必须写清楚

比如shelljs里的

"main": "./shell.js", 

好了,我们继续看express的package.json,他没有定义main文件,那我们就找index.js

程序入口

/*! * express * Copyright(c) 2009-2013 TJ Holowaychuk * Copyright(c) 2013 Roman Shtylman * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed */ 'use strict'; module.exports = require('./lib/express'); 

lib

从index.js可知,里面的功能都写在了lib里,也就是说,这里才是最重要的战场

其他

├── Readme.md 最重要的文档 ├── History.md 一般是更新历史 ├── LICENSE 授权协议 

类似的文件写的都比较清楚,需要的时候再看不急

建立大局观

大局观有2种

  • 目录结构,npm,约定等,属于常识类
  • 代码大局观

先大致看一遍,花个个把小时,一定要都看了,不求看懂,但求不放过每一个文件

这就好比买书一样,如果头一周么有看完,这辈子这边书看完的可能性就很渺小了

模块阅读

  • 根据头3步骤(入门,指南,文档)的理解,大致可以猜出一些,比如(req,res,router,view,middleware)
  • 根据文件结构,index指向lib/express,那这就是入口,看看里面组装关系,又明白一层
  • 每个文件去读,里面多少有点熟悉的东西

源码阅读

package.json 里的 files

.npmignore

  • 先看 test、benchmark、examples
  • 其他步骤同上

带着问题去探索

比如我想获得访问此网页人的ip

扒出来的都是自己的

从代码里学,才是最常久的,开源的东西已经足够多了,每天打开 github,看一下

https://github.com/trending

最近比较火的项目都有了,挑喜欢的扒一扒,肯定是有你不会的