下面我们由浅入深进行分析
结构:
┝ 03.js
┝ node_modules
│ ┝ test.js
如果我们写一个引用,没有写./:
03.js文件:
require("test.js");
此时表示引用node_modules文件夹中的东西。换句话说,当你引用node_modules文件夹里面内容的时候,就不需要写./了。
并且现在更为神奇的是,node_modules文件夹里面的模块,在引用的时候不需要考虑路径。你只需要确保node_modules文件夹需要引用模块的js文件里路径的任何祖先路径中。这句话很绕,下面听我解释。
结构:
┝ 03.js
┝ haha
│ ┝ haha.js
┝ node_modules
│ ┝ test.js
03.js:
require("./haha/haha.js");
console.log("我是03.js");
haha.js:
require("test.js"); //注意,这里很嚣张,没有指名具体路径!但是test.js真的就能被找到!
console.log("我是haha.js");
test.js:
console.log("我是test.js文件");
运行结果:
不仅如此,比如我们现在haha.js文件,它不是要引入test.js么?此时node_modules文件夹出现在任何haha.js的祖先目录中都可以。
下面四个目录中出现了node_modules文件夹,此时将自动识别test.js文件:
- C:node_studyday2haha
- C:node_studyday2
- C:node_study
- C:
当你省略文件名的时候,自动识别index.js文件:
结构:
┝ 03.js
┝ haha
│ ┝ haha.js
┝ node_modules
│ ┝ test
│ │ ┝ index.js
03.js:
require("./haha/haha.js");
console.log("我是03.js");
haha.js:
require("test"); //实际上引入的是node_modules文件夹中的test文件夹中的index.js文件
console.log("我是haha.js");
index.js:
console.log("我是test.js文件");
运行结果:
小测试:做对这个题目,就说明你已经完全会了。
下列的四种require写法,实际引入的是谁:
require("./a.js")
require("a.js")
require("a")
require("./a")
答案:
require("./a.js") 引入的是当前文件夹中的a.js文件
require("a.js") 引入的是node_modules文件夹中的a.js文件
require("a") 引入的是node_modules文件夹中的a文件夹中的index.js文件
require("./a") 引入的是当前文件夹中a文件夹中的index.js文件。
同学你懂了吗?