Node.js模块寻径

模块

  • Node.js 核心模块
    此类模块在nodejs编译时就被加载进内存,加载速度仅次于缓存,执行require()函数时传入标识与某个Node.js核心模块相吻合时,就会返回核心模块的API,如"fs","os"等在官方文档中出现的模块
let fs=require('fs')
  • 文件模块
    在加载中,如果通过寻径找出的路径是一个目录,那么会首先依次加载其中index.js,index.json以及index.node文件
    如果寻径找出的是一个第三方模板目录(node_modules),则会首先加载目录中package.json中的main字段的文件
    • 第三方模块
      使用require函数形式与核心模块一样,通常是使用npm下载的模块,存在于项目文件夹的node_modules中,,node.js对此种方式加载模块的寻找过程会从当前目录沿着每一级目录查找当前node_modules中是否有符合模块,查找到根目录的node_modules为止,效率较低
    • 项目模块
      在require函数中使用路径(./ or ../形式)载入的模块,Node.js加载其时会尝试枚举后缀名,依次是.js,.json和.node(c++模块)。加载速度在第三方模块之上,次于核心模块
let myCode=require('./myCode')

缓存

事实上用核心模块加载速度与缓存相比颇有“耍流氓”的味道
nodejs运行时,一个包一旦被加载,第二次使用require时就会在缓存中获取暴露的API,而不会重新加载

posted @ 2020-05-08 19:21  .7\0  阅读(160)  评论(0)    收藏  举报