主题
第 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 一句话解释各自是干嘛的。