Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

成哥看框架或者库的源码多吗?多的话是如何去看,看源码能学到什么?希望讲解下 #16

Closed
ghost opened this issue Jun 8, 2018 · 5 comments

Comments

@ghost
Copy link

@ghost ghost commented Jun 8, 2018

No description provided.

@ifyour

This comment has been minimized.

Copy link

@ifyour ifyour commented Jun 26, 2018

如何去看

一起讨论一下, 最近我学习到的一个方法

  1. 拿到一个开源项目, 先从 release 入手, check out 到最初的版本
  2. 找到能看得懂的版本后, 开始阅读, 其实本质上是从最核心的代码开始读
  3. 逐步向后面的版本阅读, 可以用 git 的 diff 工具, 对比每次变更, 以及官方的更新说明
  4. 然后有了一定量的输入后, 尝试自己造轮子, 这一步完成后才能代表知识是你的了

期待 @sorrycc 的回答, 应该还有更好的方法, 😄

@huanghui1

This comment has been minimized.

Copy link

@huanghui1 huanghui1 commented Oct 19, 2018

@ifyour 不错的方法,不过就是觉得这样学一个框架太久了,有的框架会在release里放上功能对应的PR。

我的方法是不管怎样先跑一遍再说,把它的核心流程了解了,再去了解它的核心架构(感觉在框架里学习到许多架构知识),然后就是把他的功能了解了,看看他是如何实现功能的,最后才是看它的每一个release实现的功能~

@dkvirus

This comment has been minimized.

Copy link

@dkvirus dkvirus commented Oct 24, 2018

我从 github 上把 umi 源码拉了下来,也 learn bootstrap 安装了依赖包,谁知道怎么进行断点调试。就是很好奇 @sorrycc 在开发的时候是怎么做到调试的。

@sorrycc

This comment has been minimized.

Copy link
Owner

@sorrycc sorrycc commented Oct 26, 2018

@ifyour 👍

我补充几点,以 reduxjs/redux 为例。

  1. 看源码之前可以先看官网文档,先要会用,再去弄懂 why 。用的过程中把有疑问的点记下来,带着问题去看源码会更有目的性
  2. 看源码我通常会对照着用例来看,这样能搞懂各种用法以及边界条件,用例看完通常才会知道源码里的每个分支为什么那么处理,比如 applyMiddleware.jsapplyMiddleware.spec.js
  3. 出于个人兴趣的原因,我还会看 package.json。1) 看 scripts 部分,可以了解一个库是如何组织的,比如文档实现,用例怎么写和用什么跑,eslint 和 prettier 怎么配合使用,打包逻辑,example 的组织等 2) 看 dependencies 和 devDependencies 部分,看看有没有什么依赖库是我不知道的,记下来,下次自己也可以用
@sorrycc sorrycc closed this Oct 26, 2018
@xiaohuoni

This comment has been minimized.

Copy link

@xiaohuoni xiaohuoni commented Oct 26, 2018

我看一个项目都是先按第三步看package.json开始的,看到工具,不知道的,直接先npmjs.org搜索一下,然后找到github地址。发现直接从github上容易找到别的东西。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants
You can’t perform that action at this time.