一些概念:

模块(module)

通常以单个文件形式存在的功能片段,入口文件通常称之为入口模块或主模块

库(library,简称lib)

以一个或多个模块组成的完整功能块,为开发中某一方面的问题提供完整的解决方案

包(package)

包含元数据的库,这些元数据包括:名称、描述、git主页、许可证协议、作者、依赖等等

image.png

一个模块就是一个文件,一个文件实现一个小功能。
库(lib)比如:jq、mockjs
库+描述信息+依赖 = 包

背景:

模块化作为基础、用小颗粒模块化组合成为基于CommonJS标准的库,反复使用、用于开发大型应用。
有点PaSS化的感觉。
不用重复造轮子,而是可以直接拿来别人的东西直接用。
image.png

模块化缺点解释:

项目变大、使用库较多时,每个库的目录要求不同、依赖关系复杂,会让开发代码变得难以维护
开发环境使用的文件很多,占用空间过大,到了生产环境、服务器上就会很慢。很多库到了服务器还不需要了,不需要上传。

问题:

删除1个10G的文件
删除100000个1kb的文件

哪个快?哪个慢?
10G的快。因为是直接将磁盘地址指向空。但是1kb的要指向10000次,就慢了。
同理,在服务器上上传N个js模块,速度就很慢、还容易丢包

包管理器

NPM
Yarn
pnpm
cnpm
……
image.png


Javascript在浏览器环境运行,没有操作用户电脑本地文件的资源的权限。