Require
require作用:
- 加载执行模块文件的代码
- 返回模块的exports对象
//导出模块
exports.abc = 'hello'
//导入模块
var a = require('./a')
console.log(a)
//{ abc: 'hello' }
加载规则:
- 优先从缓存中加载
例如有三个文件main.js ,a.js ,b.js
//main.js
require('./a')
var b = require('./b')
console.log(b)
//a.js
console.log('aaa')
require('./b')
//b.js
console.log('bbb')
exports.b = 'bbb'
执行node main.js结果为
aaa
bbb
{b:'bbb'}
在a.js中已经加载过b.js文件,所以main.js再加载b.js的时候就不会打印bbb了
但main.js中可以得到b.js导出的exports对象
目的是为了避免模块重复加载,提高模块的加载效率
- 判断模块标识符
-
路径形式的模块标识符 require(’./a’)
- 参数以‘/’开头,表示加载位于绝对路径的模块文件
- 参数以’./'开头,表示加载位于相对路径(跟当前执行脚本的位置相比)的模块文件
-
核心模块 require(‘http’)
- 表示加载默认提供的核心模块
-
第三方模块 require(‘express’)
- 找到node_modules中当前加载模块(如express)的package.json文件,然后加载main字段指定的入口文件
- 如果package.json文件中没有main字段,或者package.json文件不存在,则会加载该模块目录下的index.js
- 如果以上都不存在,则会逐级向上一层目录的node_modules中查找
- 直到找不到该模块,报错:can not find module xxx
来源:CSDN
作者:riper_carry
链接:https://blog.csdn.net/weixin_45588539/article/details/104058460