zoukankan      html  css  js  c++  java
  • 学习笔记—Node中模块查找机制

    日常的学习笔记,包括 ES6、Promise、Node.js、Webpack、http 原理、Vue全家桶,后续可能还会继续更新 Typescript、Vue3 和 常见的面试题 等等。


    在学习其他模块之前,我们先要清楚 文件模块中的查找规范机制

    自定义模块查找规范

    引用自定义模块时,会自动查找目标目录下的 index.js文件

    // /jQuery/index.js
    module.exports = "jquery"
    // /main.js
    const jQuery = require('./jQuery')
    console.log(jQuery); // jquery
    

    但是如果我们不去定义 index.js,则会出现无法查找文件的问题,也就是报错。

    // /jQuery/a.js
    module.exports = "jquery"
    // /main.js
    const jQuery = require('./jQuery')
    console.log(jQuery); // Cannot find module './jQuery'
    

    这样我们就需要一个描述文件 package.json ,在文件中有一个 main 属性,可以定义文件入口。

    // /jQuery/package.json
    {
        "main":"./jQuery/a.js"
    }
    

    这样我们再重新打印,发现结果被成功打印了出来。

    所以我们可以总结一下文件模块的 查找规范

    • 最新的node版本中,默认 先查找同名文件 。如果没找到,则尝试添加查找 .js和.json文件 。如果还是没有,会查找 同名文件夹(当成了一个包),找到后,会先找 package.json文件。如果没有,则会继续查找 index.js文件。如果依旧不存在,则会报错。
    • 老版本的node中, 如果 有package.json 的情况下,会先找同名包。如果 没有package.json,会去 查找同名文件
    // 新版node查找流程
    │
    └───┤ 同名文件
     │	
     │──┤ 同名.js / 同名.json
     │
     │──┤ 同名文件夹
        │
        │───┤ pageage.json
        │
        └───┤ index.js
       
     都没找到,则抛出一个错误。
    

    这就是node的自定义模块查找规范,我们在平时面试的时候可能会遇到这种问题。

    比如介绍一下 node的模块查找机制,我们就可以用这种方式去介绍。(目前一般很少有问老版本node的查找机制,一般都会问两种查找机制的区别,感兴趣的可以去查阅相关资料。)

    本篇文章由莫小尚创作,文章中如有任何问题和纰漏,欢迎您的指正与交流。
    您也可以关注我的 个人站点博客园掘金,我会在文章产出后同步上传到这些平台上。
    最后感谢您的支持!

  • 相关阅读:
    数据中心
    【Vegas原创】解决cmd窗口不够使用的方法
    【Vegas原创】定期删除archive档的方法
    【Vegas原创】Can't connect to X11 window server using ':0.0' 解决方法
    Linux 操作指令
    【Vegas原创】按自定义格式进行编号的SQL自定义函数
    Error:No description found when saving maintenance plans
    【Vegas原创】巧用任务计划
    svn命令备份
    [转载]R与python共舞
  • 原文地址:https://www.cnblogs.com/moxiaoshang/p/15596528.html
Copyright © 2011-2022 走看看