举个例子:在一个项目的主程序server.js中引入mongoose模块,又在另一个文件use.js中给mongoose定义格式和自定义方法,最后在sever.js引入这个文件,可在use.js为什么又要引入mongoose模块,主程序server.js中不是以及经引入了么?求大佬告知,
小伙看你根骨奇佳,潜力无限,来学PHP伐。
NodeJs 中,每个文件都是一个独立的模块,里面定义的变量都是在一个局部作用域中,外面是访问不到的。因此,你在 a.js 中引用了 lib,可能是这样
a.js
lib
const lib = require("lib");
这里的 lib 是一个局域变量,出了这个文件,其它地方就访问不到了(除非 export)。所以在 b.js 中如果你还需要引用 lib 的话,就得
b.js
const lib = requier("lib");
这里的 lib 和之前 a.js 中的 lib 其实是指向的同一个对象(都是从 lib.js 中导出的),但是它们(指变量)处于不同(独立)的作用域中。
如果你以前写 PHP,你可能对此难以理解。PHP 的 include 相当于在当前位置插入了包含的脚本,而 node 中的 require 只是引入了对应脚本导出的对象。如果你去看看 requirejs 或者 seajs 的代码,你就会了解 node 的 require 在干啥了。
每个模块都是独立的,use中要改造mongoose,肯定需要require得到mongoose对象,不然你怎么改造
NodeJs 中,每个文件都是一个独立的模块,里面定义的变量都是在一个局部作用域中,外面是访问不到的。因此,你在
a.js
中引用了lib
,可能是这样这里的
lib
是一个局域变量,出了这个文件,其它地方就访问不到了(除非 export)。所以在b.js
中如果你还需要引用lib
的话,就得这里的
lib
和之前 a.js 中的lib
其实是指向的同一个对象(都是从 lib.js 中导出的),但是它们(指变量)处于不同(独立)的作用域中。如果你以前写 PHP,你可能对此难以理解。PHP 的 include 相当于在当前位置插入了包含的脚本,而 node 中的 require 只是引入了对应脚本导出的对象。如果你去看看 requirejs 或者 seajs 的代码,你就会了解 node 的 require 在干啥了。
每个模块都是独立的,use中要改造mongoose,肯定需要require得到mongoose对象,不然你怎么改造