zoukankan      html  css  js  c++  java
  • 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查找模块
    ---------------------

  • 相关阅读:
    利用WebClient实现自动添写、提交表单
    动态.net代码生成器遇到的问题
    unicode
    使用using清理非托管资源
    C#中解决插入数据库的某个字段类型为datetime 为空
    JQuery中根据属性或属性值获得元素
    Access 的top和order by 的问题
    JavaScript escape() 函数
    Asp.net嵌套
    合并程序集时出错的问题ILMerge.Merge.ERROR...
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11192625.html
Copyright © 2011-2022 走看看