美文网首页
Nodejs--模块的加载机制

Nodejs--模块的加载机制

作者: 扶得一人醉如苏沐晨 | 来源:发表于2023-09-20 15:20 被阅读0次

一、优先从缓存中加载

模块在第一次加载后会被缓存。 这也意味着多次调用require 不会导致模块的代码被执行多次**
注意
不论是内置模块、用户自定义模块、还是第三方模块,它们都会优先从缓存中加载,从而提高模块的加载效率

二、内置模块的加载机制

内置模块是由 Node.js 官方提供的模块,内置模块的加载优先级最高
require(fs)始终返回内置的 fs 模块,即使在 node_modules 目录下有名字相同的包也叫做 fs

三、自定义模块加载

  • 加载自定义模块时,路径要以./ 或 ../ 开头,否则会作为内置模块或第三方模块加载

  • 导入自定义模块时,若省略文件扩展名,则 Node.js 会按顺序尝试加载文件

    • 按确切的文件名加载
    • 补全 .js 扩展名加载
    • 补全 .json 扩展名加载
    • 补全 .node 扩展名加载
    • 报错

四、第三方模块加载

  • 若导入第三方模块, Node.js 会从当前模块的父目录开始,尝试从 /node_modules 文件夹中加载第三方模块。
  • 如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录

例如,假设在 C:\Users\bruce\project\foo.js 文件里调用了 require('tools'),则 Node.js 会按以下顺序查找:

  • C:\Users\bruce\project\node_modules\tools
  • C:\Users\bruce\node_modules\tools
  • C:\Users\node_modules\tools
  • C:\node_modules\tools

五、目录作为模块加载

当把目录作为模块标识符进行加载的时候,有三种加载方式:

  • 在被加载的目录下查找 package.json 的文件,并寻找main 属性,作为 require()加载的入口
  • 如果没有 package.json 文件,或者 main入口不存在或无法解析,则 Node.js 将会试图加载目录下的 index.js 文件。
  • 若失败则报错

相关文章

  • AMD

    AMD, Asynchronous Module Definition,即异步模块加载机制,它采用异步方式加载模块...

  • 饿了吗大前端阅读(二)

    模块 模块机制 模块加载机制官方文档已经说的很明白的,基本的流程是 如果加载为第三方或者系统依赖(就是在node_...

  • Node 面试题整理

    1:简述require()模块加载机制 答:在node中文件即模块,分为原生模块和3种文件模块。具体加载顺序如下图...

  • 模块加载机制有哪些?es6中的module和其他机制有什么区别?

    模块加载机制有哪些?es6中的module和其他机制有什么区别? 答案: 模块机制有amd,cmd和commonJ...

  • 那些年成为node攻城狮的路(二)

    模块加载机制浅析 node中模块分为核心模块和文件模块两大类,核心模块诸如fs、http、util...,文件模块...

  • 模块化编程--require使用

    AMD--require AMD规范:异步模块加载机制 服务器端 -- 同步加载 浏览器端 -- 异步加载 ...

  • NodeJS模块加载机制

    在NodeJS中一个文件就是一个模块,每个模块都有自己的作用域 全局变量 __filename:当前文件被解析过后...

  • seajs模块加载机制

    本文谈论的代码版本是Sea.js 2.3.0,seajs最新的版本是3.0,3.0版本变动较大. 新事物的出现或多...

  • nodejs模块加载机制

    nodejs通过require加载模块,require里面分为相对路径和非相对路径,不同的表示方法,node的寻找...

  • node模块加载机制

    Node中存在一个module对象代表模块自身,拥有一个exports属性,一个文件就是一个模块。 每个js文件可...

网友评论

      本文标题:Nodejs--模块的加载机制

      本文链接:https://www.haomeiwen.com/subject/yckjvdtx.html