Nodejs|面试官:说说 Node 文件查找的优先级以及 Require 方法的文件查找策略?

一、模块规范

NodeJS对CommonJS进行了支持和实现,让我们在开发node的过程中可以方便的进行模块化开发:

在Node中每一个js文件都是一个单独的模块
模块中包括CommonJS规范的核心变量:exports、module.exports、require
通过上述变量进行模块化开发
而模块化的核心是导出与导入,在Node中通过exports与module.exports负责对模块中的内容进行导出,通过require函数导入其他模块(自定义模块、系统模块、第三方库模块)中的内容

二、查找策略

require方法接收一下几种参数的传递:

原生模块:http、fs、path等
相对路径的文件模块:./mod或…/mod
绝对路径的文件模块:/pathtomodule/mod
目录作为模块:./dirname
非原生模块的文件模块:mod
require参数较为简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同,如下图:
Nodejs|面试官:说说 Node 文件查找的优先级以及 Require 方法的文件查找策略?_第1张图片
从上图可以看见,文件模块存在缓存区,寻找模块路径的时候都会优先从缓存中加载已经存在的模块

原生模块

而像原生模块这些,通过require方法在解析文件名之后,优先检查模块是否在原生模块列表中,如果在则从原生模块中加载

绝对路径、相对路径

如果re

你可能感兴趣的:(前端八股文,前端,javascript,json)