commonjs需要(" moduleName")如何工作?

时间:2018-01-12 19:44:04

标签: javascript node.js commonjs

我有一段时间在脑海里有一个愚蠢的问题: require("moduleName")如何运作?

我了解如果我的项目中有文件moduleA.js,我可以使用require("./moduleA")加载模块。但对于许多着名的图书馆来说,#34;如express,lodash等,我不需要显式写出库所在的相对路径。相反,我只使用模块名称(例如require('lodash');)。我的问题是:这是如何工作的?如何以这种方式使我自己的模块工作,模块可以在不写路径的情况下全局加载(例如require('moduleA'))。

由于

2 个答案:

答案 0 :(得分:1)

使用NPM安装库时,库会安装在名为node_modules的文件夹中,当您创建require关键字时,节点会在该文件夹中查找软件包名称。 当您需要js文件时,应指定其路径。

答案 1 :(得分:1)

require('./moduleA')这样的相对路径意味着您要在项目中导入脚本或模块。 A"众所周知的"像require('loadash')这样的路径意味着您要导入外部依赖项,可以在C:/path/to/project/node_modules/lodash下本地安装到您的项目,也可以全局安装到您的帐户或计算机,具体取决于您配置npm的方式当你安装Node.js.该路径可能类似于C:/Users/yourname/AppData/Roaming/npm/node_modules/lodash

如果您在npm上发布模块,则其他人可以将其作为外部依赖项安装,require(),而无需指定相对路径。