龙空技术网

极简node_modules快速了解

faesuite 122

前言:

目前你们对“vue node_modules”大致比较注重,看官们都需要学习一些“vue node_modules”的相关文章。那么小编在网摘上汇集了一些关于“vue node_modules””的相关文章,希望姐妹们能喜欢,同学们一起来了解一下吧!

一、概述

在 Node.js 模块系统中,每个文件都被视为一个独立的模块;

npm install 执行完毕后,我们可以在 nodemodules 中看到所有依赖的包。虽然使用者无需关注这个目录里的文件夹结构细节,只管在业务代码中引用依赖包即可;node_modules是安装node后用来存放用包管理工具下载安装的包的文件夹。比如webpack、gulp、grunt这些工具。在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块。

二、模块类型

node.js中模块有两种类型:核心模块和文件模块;

三、核心模块

Node.js 核心模块会被编译成二进制,核心模块定义在 Node.js 源代码的lib/目录下,require()总是会优先加载核心模块;

核心模块直接使用名称获取:

var http=require('http');
四、文件模块

如果按确切的文件名没有找到模块,则 Node.js 会尝试带上.js.json.node拓展名再加载。

const circle = require('./circle.js');console.log(`半径为 4 的圆的面积是 ${circle.area(4)}`);

1、.js 文件会被解析为 JavaScript 文本文件, .json 文件会被解析为 JSON 文本文件。 .node 文件会被解析为通过 process.dlopen() 加载的编译后的插件模块。

2、以 '/' 为前缀的模块是文件的绝对路径。 例如, require('/home/marco/foo.js') 会加载 /home/marco/foo.js 文件。

3、以 './' 为前缀的模块是相对于调用 require() 的文件的。 也就是说, circle.js 必须和 foo.js 在同一目录下以便于 require('./circle') 找到它。

4、当没有以 '/'、 './' 或 '../' 开头来表示文件时,这个模块必须是一个核心模块或加载自 node_modules 目录。

5、如果给定的路径不存在,则 require() 会抛出一个 code 属性为 'MODULE_NOT_FOUND' 的 Error。

五、目录模块

可以把程序和库放到一个单独的目录,然后提供一个单一的入口来指向它。把目录递给require()作为一个参数,有三种方式:

1、第一种方式是在根目录下创建一个package.json文件,并指定一个main模块。 例子,package.json文件类似:

{ "name" : "some-library",  "main" : "./lib/some-library.js" }

如果这是在./some-library目录中,则require('./some-library')会试图加载./some-library/lib/some-library.js

这就是 Node.js 处理package.json文件的方式。

如果目录里没有package.json文件,或者'main'入口不存在或无法解析,则 Node.js 将会试图加载目录下的index.jsindex.node文件。 例如,如果上面的例子中没有package.json文件,则require('./some-library')会试图加载:

./some-library/index.js./some-library/index.node

2、如果传递给require()的模块标识符不是一个核心模块,也没有以'/''../''./'开头,则 Node.js 会从当前模块的父目录开始,尝试从它的/node_modules目录里加载模块。 Node.js 不会附加node_modules到一个已经以node_modules结尾的路径上。如果还是没有找到,则移动到再上一层父目录,直到文件系统的根目录。

例如:如果在'/home/ry/projects/foo.js'文件里调用了require('bar.js'),则 Node.js 会按以下顺序查找:

/home/ry/projects/node_modules/bar.js/home/ry/node_modules/bar.js/home/node_modules/bar.js/node_modules/bar.js

3、从全局目录加载

如果NODE_PATH环境变量被设为一个以冒号分割的绝对路径列表,则当在其他地方找不到模块时 Node.js 会搜索这些路径;

$HOME/.node_modules$HOME/.node_libraries$PREFIX/lib/node

标签: #vue node_modules #vue node_modules可以引用路径吗 #vue node modules