NodejS---require的机制

Posted 指尖下的世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodejS---require的机制相关的知识,希望对你有一定的参考价值。

  假设Y是路径,X是文件名或目录名,当 Nodejs 遇到 require(Y+X) 时,按照下面的顺序处理:

  1、如果 X 是核心模块(例如:require("http"))

  a.返回该模块

  b.不再继续执行

  2、如果Y是以“./”、“/”或“../”开头

  a.优先从缓存中加载

  b.把X当成文件,从指定路径开始,依次查找下面文件:X、X.js、X.json、X.node,只要其中一个存在,就返回该文件,不再继续执行

  c..把X当成目录,从指定路径开始,依次查找下面文件:X/package.json(main字段)、X/index.js、X/index.json、X/index.node,只要其中一个存在,就返回该文件,不再继续执行

  3.如果 X 不是核心模块,也没有以“./”、“/”或“../”开头,则Nodejs会从当前模块的父目录开始,尝试从它的 /node_module 目录里加载模块,如果还是没有找到,则移动到再上一层父目录,直到文件系统的根目录

  4.抛出“not found”

注意:require第一步是从缓存中加载某个模块,此时就算你更新了目标模块的内容,我们实际加载到的内存中的内容是不变的!!!!!!!!

//modelJs.js
console.log("modelJs被加载了");
var name="miyue";
//requireJs.js
    setInterval(function () {
        var modelJs=require("./modelJs");
        console.log(modelJs.name);//miyue
    },10000)

 

 

以上是关于NodejS---require的机制的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs require 远程地址

nodejs require模块找不到怎么解决?

nodejs require路径使用变量报错为啥

nodejs require执行流程

NodeJs require('./file.js') 问题

你知道的Go切片扩容机制可能是错的