最近写前端代码发现一些情况和写 python 的时候不一样。
同样是 JetBrains 旗下的 IDE:
搜索了网上没有这方面的讨论,有一个阅读代码的方法是直接去 GitHub 阅读,通过一些浏览器插件来辅助。但是由于 npm 颗粒度太细,感觉体验也不好:
比如我读
antd/form
的源代码,发现它是对rc-field-form
的封装。意味着我又要去手动搜索打开rc-field-form
的网址
1
wednesdayco 2020-03-26 10:46:50 +08:00 1
最近后端老哥写前端的帖子有点多啊。。
|
2
wednesdayco 2020-03-26 11:14:01 +08:00
vscode 试试?当然还是得看 npm 的包里是否包含“源码”,而不是编译版本。
|
3
bnm965321 OP @wednesdayco vscode 试了也是一样
|
4
magicdawn 2020-03-26 12:10:17 +08:00
能找到源码不错了, npm 包可以不必有 repo 的
正确姿势, 看你安装好的 node_modules 里的源码 |
5
noe132 2020-03-26 12:19:02 +08:00
npm 的包一般都是编译过的版本,为了适应各种运行环境,以及解决一些打包需求,代码通常都会编译到一个特定的 target 。并且为了降低包体积,你安装时很有可能没有源码。
想看编译后的代码直接到 node_modules 里找对应的包。想看未编译的版本就得到源代码仓库。不像 python 大多都是直接源代码打包。 被编译后的代码一般没有阅读价值,而 typescript 的类型比 python 的类型强很多,所以大部分包看类型就足够了 npm 包一般依赖比较深,你这种看代码的方式不太合适。一般来说了解接口就足够了,包应该当作黑盒处理 |
6
bnm965321 OP @noe132 看到 Typescript 类型签名大多数时候够了。但是有时候需要看一下源代码才能理解怎么用,比如 antd/Form.List 这个 render props 返回的几个参数搞不懂啥意思,官方文档也没有说明
|
7
Trim21 2020-03-26 13:15:05 +08:00 via Android
感觉是因为 python 作者会额外写 pyi 的人少,所以你还能转跳的源码…
|
8
bnm965321 OP @Trim21 pyi 是加入类型声明吧,有类型声明也可以额外跳转到 implementation 的。
不过也不是总是可以,动态语言里面转来转去,IDE 有时候会分不清变量的类型。但是只要知道是哪个类型,找源码还是很简单的。 |
9
Tomotoes 2020-03-26 16:06:13 +08:00
我的工具是 :vscode + 插件 Search node_modules, 还挺方便的。
|
10
bnm965321 OP @Tomotoes 主要的问题是 node_modules 里面的代码不是 for human readable 的,我看着都怕。。
|
11
ljpCN 2020-03-26 16:16:15 +08:00 via Android
恭喜楼主发现了一个 node_modules 的无数个缺点中的一个,我觉得业界的确需要一个新的或者额外的机制来支持楼主需要的功能。
|
13
bnm965321 OP @Tomotoes 比如 node_modules/antd 下面有三个目录:es/lib/dist 。这三个目录我看了都是编译后的代码
|
14
bnm965321 OP @ljpCN 不是我一定要有这个功能,我是想看一下业界有没有什么更好的办法,没有办法我就去 GitHub 看代码咯
|
15
wednesdayco 2020-03-26 17:01:39 +08:00
|