- 首页 > it技术 > >
node require 导入模块解析 加载规则和加载机制
- requre 加载规则和加载机制
- 核心模块 require(“模块名”)
- 第三方模块 require(“模块名”)
- 【node require 导入模块解析 加载规则和加载机制】自定义模块 require(“模块路径”) ;
//一定要写 ./ 不然会被认为是核心模块 然后找不到报错
- 优先加载缓存数据
main.js require("./a")
var b = require("./b")
a.js
console.log("a.js loading")
var b = require("./b")
b.js
console.log("b.js loading")
module.exports = "bljs"
运行main.js
打印
a.js loading
b.js loading
```
由于 a.js 已经加载了 b.js,所以 main.js 不会重复加载b.js,
是为了避免重复加载,提高模块加载效率
main.js 的 require("./b")只是为了获取 b.js 导出的结构
- 判断模块标识 require(“模块标识”)
- 路径形式模块
以 ./ 单前目录不可省
…/ 上一级目录不可省
/xxx(几乎不用)
首位的 / 在这里表示的是当前文件模块所属磁盘根目录
.js 后缀名可省
require("./foo")
- 核心模块
核心模块文件已经被编译到了二进制文件中了,我们只需要按名字加载就行了
require(“fs”)
- 第三方模块
- 不可能有如何一个第三方和核心模块名字是一样的
- 凡是第三方模块都必须通过 npm 来下载 使用时 require(“模块名”)
找 node_modules/模块名/package.json 文件
在找 json 文件中的 main 属性 记录了当前模块的入口模块
- 可以测试
在 node_modules 下新建 csA 文件夹
csA 下新建 package.json {“main”:“index.js”}
下新建 index.js
console.log(“csA 加载了”)
module.exports = “测试 csA”
在 node_modules 同级目录下创建 app.js
var csA = require(“csA”)
console.log(csA)
运行 app.js
node app.js
- 如果 package.json 不存在 或 main指定入口也没有
则 node 会自动找该目录下的 index.js,index.js 会作为默认备选项
- 如果 以上条件不成立
则会进入上一级目录的 node_modules 目录查找 模块 在没有 ,在往上上一级,…
直至磁盘根目录,还没找到 会报错
can not find module xxx
推荐阅读