• node自定义模块的路径查找


    自定义模块指的是非核心模块,也不是路径形式的标识符。它是一种特殊的文件模块,可能是一个文件或者包的形式。这类模块的查找是最费时的,也是所有方式中最慢的一种。

    模块路径是Node在定位文件模块的具体文件时制定的查找策略,具体表现为一个路径组成的数组。关于这个路径的生成规则,我们可以手动尝试一番。

    创建test.js文件,其内容为 console.log(module.paths); 。
    将其放到任意一个目录中然后执行 node test.js 。

    在Linux下,你可能得到的是这样一个数组输出:

    [ '/home/jackson/research/node_modules',
    '/home/jackson/node_modules',
    '/home/node_modules',
    '/node_modules' ]
    1
    2
    3
    4
    而在Windows下,也许是这样:

    [ 'c:\nodejs\node_modules', 'c:\node_modules' ]
    1
    可以看出,模块路径的生成规则如下所示。

    前文件目录下的node_modules目录。
    父目录下的node_modules目录。
    父目录的父目录下的node_modules目录。
    沿路径向上逐级递归,直到根目录下的node_modules目录。
    它的生成方式与JavaScript的原型链或作用域链的查找方式十分类似。在加载的过程中,Node会逐个尝试模块路径中的路径,直到找到目标文件为止。可以看出,当前文件的路径越深,模块查找耗时会越多,这是自定义模块的加载速度是最慢的原因。

    webpack可以配置模块的查找路径

    resolve: {
    modules: [path.resolve(__dirname, 'node_modules')]
    }
    1
    2
    3
    指定只在当前模块的node_modules查找模块
    ---------------------

  • 相关阅读:
    10 种保护 Spring Boot 应用的绝佳方法
    Redis 如何分析慢查询操作?
    Spring Boot 主类及目录结构介绍
    Redis 再牛逼,也得设置密码!!
    Spring Data Redis 详解及实战一文搞定
    Spring Boot Redis Cluster 实战干货
    超详细的 Redis Cluster 官方集群搭建指南
    Redis Linux 安装运行实战全记录
    hdu 4790 Just Random (思路+分类计算+数学)
    poj 1328 Radar Installation(贪心)
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11192625.html
Copyright © 2020-2023  润新知