主题
第 10 章 依赖 · 站在一亿个陌生人的肩膀上
没有人从零写一切。处理日期,发请求,画图表,这些别人早就写好、打磨过千百遍的轮子,叫库(Library)或包(Package)。把它们装进你项目的工具,叫包管理器,JavaScript 世界用 npm,Python 世界用 pip,像是代码的应用商店。你装进来的这些东西,统称你的依赖(Dependencies)。
打开我们任何一个前端项目,都能看到两样东西。一个是 package.json,项目的购物清单,写着依赖哪些包,各要什么版本。另一个是 node_modules 文件夹,按清单搬回家的货。它大得离谱是正常的,删了随时能凭清单重装(npm install),而且永远不需要手动去改它。
版本号 1.2.3 这三段数字有讲究,这套约定叫 semver。第一段变了,可能不兼容旧用法。后两段变,一般是加功能和修 bug。"在我电脑上能跑,在你电脑上崩了"的惨案,很大一部分来自两台电脑装的版本不一致。所以还会有一个 lock 文件(如 package-lock.json),把每个包的精确版本钉死,保证人人装到的完全一样。
依赖也有代价,知道两句话就够。包会过时腐烂,多年没人维护。包也可能被坏人下毒,这叫供应链攻击。所以当 AI 说"我装个包来解决这个问题"时,你现在完全知道它在干什么了,偶尔可以追问一句,这个包多少人在用?最近还在更新吗?
关键领悟
现代开发的默认姿势就是站在别人肩膀上。要紧的是知道自己站在谁的肩膀上,用不着拒绝依赖。
试一试
打开我们项目的 package.json,挑三个没见过的依赖,让 AI 一句话解释各自是干嘛的。