第三方模块
- 凡是第三方模块都必须通过 npm 来下载
- 使用的时候就可以通过 require(‘包名’) 的方式来进行加载才可以使用
- 不可能有任何一个第三方包和核心模块的名字是一样的
一、引用过程
- 先找到当前文件所处目录中的 node_modules 目录
- node_modules/模块名
- node_modules/模块名/package.json 文件
- node_modules/模块名/package.json 文件中的 main 属性
- main 属性中就记录了 模块 的入口模块
- 然后加载使用这个第三方包,实际上最终加载的还是文件
如果 package.json 文件不存在或者 main 指定的入口模块是也没有
则 node 会自动找该目录下的 index.js
也就是说 index.js 会作为一个默认备选项
如果以上所有任何一个条件都不成立,则会进入上一级目录中的 node_modules 目录查找
如果上一级还没有,则继续往上上一级查找
如果直到当前磁盘根目录还找不到,最后报错:
can not find module xxx var template = require(‘引用的模块’)
我们一个项目有且只有一个 node_modules,放在项目根目录中,这样的话项目中所有的子目录中的代码都可以加载到第三方包,不会出现有多个 node_modules
二、模块查找机制
- 优先从缓存加载
- 核心模块
- 路径形式的文件模块
- 第三方模块