加载模块是同步的
var fs=require('fs');
require('./') 是表示当前js文件所在目录,和启动node命令的路径无关
模块分为3块
-
内置模块、原生模块、核心模块 已经在编译时成为了二进制模块非常快
-
文件模块 一个js文件就是文件模块 后缀可以是json 或 node(c/c++写的) 速度慢一些
-
第三方模块 从npm上下载的
情况一如果加载文件路径,
-
如果是文件 可以不写后缀 .js
-
如果是目录,先找package.json文件,如果有会尝试加载入口文件( main属性) package.json -> app.js->index.js/index.json/index.node (最好写后缀)
情况二如果不是核心模块则认为是一个第三方模块(自定义模块)会当前目录或递归父目录(递归找到到磁盘根目录)是否有node_mdules文件夹
有node_mdules才看有没有这个文件夹
每次加载的时候都先从缓存中加载
如果和核心模块重名则只会加载核心模块
require加载模块 会执行一遍,如果多次加载同一模块会只执行一次 剩下会直接从缓存中取不会加载。
require('./array.js');
require('./array.js');
require('./array.js');
只会执行一次
模块当前于module。
console.log(module.path);