Node.js(2)模块与包

本文深入解析Node.js中的模块引入机制,包括核心模块、本地模块及第三方模块的路径问题,探讨REPL交互式解释器的使用,以及module对象和require对象的功能。同时,文章详细介绍了包的概念、包描述文件package.json的必要字段与npm/yarn包管理工具的使用技巧。

一、模块(module):

本章主要讲解模块与包,认识模块请看小编上一篇文章Node.js的基础知识

1、 引入模块时的路径问题:

(1)引入核心模块,不需要考虑路径,直接书写模块名即可。

var http = require('http');		//引入核心模块http,并将其赋值给一个模块对象。

(2)引入模块文件:
引入本模块同路径下的模块:var 变量 = require('./模块名');
引入本模块同路径下的下一级路径下的模块:var 变量 = require('./模块名');
引入本模块上一级路径下的模块:var 变量 = require('../模块名');
(3)引入第三方模块:
由于第三方模块都被下载到了本项目的node_modules文件夹中,所以直接输入模块名即可:var express = require('express');

2、REPL交互式解释:

(1)在命令提示符中输入node命令,可以直接进入到REPL交互式解释器工具中。
(2)除了window对象及其DOM操作以外,几乎所有的js操作都可以执行。
(3)可以在REPL交互式解释器中查看Node下的对象。
(4)在REPL交互式解释器中直接输入下列命令:
>moudle <回车>
上述命令中将显示当前模块的具体属性,问欸是当前是哪个模块?
在REPL交互式解释器中显示的module模块就是REPL交互式解释器本身。
(5)按两次ctrl+C可以推出REPL交互式解释器环境。

3、module对象:

module对象是Moudle类的实例,表示模块自身。
在这里插入图片描述

module.id表示模块的标识符
module.express表示模块的导出对象
module.parent表示当前模块的父模块,当前模块是谁加载的
module.filename表示模块的绝对路径
module.loaded表示是否加载完成
module.children表示当前模块加载了哪些模块
module.paths表示模块的搜索路径,路径的多少取决于目录的深度
4、require对象:
  • require.main:表示项目的主模块(入口模块)。
    在模块中可以调用(require.main == module){}来判断当前是否为主模块。
  • require.resolve:表示完整的模块名。
    //例如:
    console.log(require.resolve('./a'));	//F:\node.js
    console.log(require.resolve('http'));	//http
    console.log(require.resolve('abc'));	//报错,没有找到abc模块
    
  • require.cache:显示哪些模块装入了缓存。
5、模块的特点
  1. 对于同一个模块的多次调用,不会引起模块内代码额多次执行。
  2. 模块在首次加载后将缓存存在内存缓冲区中,即require.cache。
  3. 两个模块相互调用,不会导致模块之间的循环执行。

二、认识包(Package):

1、 包:

包是将模块联系起来的机制(可以认为一个项目就是一个包)。

2、包由两部分组成
  1. 包结构:结构包的一些目录结构
  2. 包描述文件:package.json
    在这里插入图片描述

Com模拟JS规定的package.json文件中必须的字段

序号键名含义键值数据类型说明
1name包名字符串只能包含小写字符、数字、.、_和-、不允许出现空格
2descrip包介绍字符串
3version包版本号字符串
4keywords包关键字数组NPM中主要用来做分类搜索
5maintainers包维护者列表JSON数组每个维护者由name、email和web这3个属性组成
6contribuctors包贡献者列表JSON数组每个贡献者由name、email、和web这3个属性组成
7bugs反馈bug的网址/邮箱JSON由url、email两个属性组成
8licenses包许可证列表JSON数组
9repositories托管源代码位置列表JSON由type、url、path三个属性组成
10dependencies包的依赖关系JSON由包名和版本号组成
11main包项目的入口文件字符串默认值为项目根目录下的index.js文件

CommonJS规定的package.json文件中的其他字段

序号键名含义键值数据类型
1homepage包项目的首页地址
2author作者
3os操作系统
4CPU处理器
5engine项目需要的Node版本JSON
9scriptnpm script脚本JSON
10devDependencies包的依赖关系JSON

在这里插入图片描述

3、包管理工具:npm、yarn
  1. npm init:初始化npm工具,并在项目根目录下创建包描述文件。
    npm init-y:在不提问的情况下直接创建包描述文件。
  2. npm install 包名(简写为:npm i 包名):
    哪些包全局安装,哪写包本地(本项目)安装:每一个项目都可能会用到包,或者是工具类型的包,都必须全局安装。
    全局安装到哪里了?npm root -g 查看全局安装的路径。
  3. npm list查看当前项目的所有的依赖包列表。
  4. npm run 查看当前项目所有的npm Script脚本代码。
命令简写含义
npm -v-显示npm包管理工具的版本号
npm init-初始化npm,在项目中创建package.json文件
npm init -y-所有选项均采用默认是初始化npm
npm install 包名npm i 包名安装依赖包
npm install 包名 --savenpm i 包名 -S安装依赖包至生产环境,依赖关系书写在dependencies中
npm install 包名 --save-devnpm i 包名 -D安装依赖包至开发环境,依赖关系书写在devDependencies中
npm install 包名 -gnpm i 包名 -g全局安装依赖包
npm installnpm i 包名 -i按照package.json中的依赖安装所偶有哦需要用到的包
npm root -g-查看全局安装依赖包的安装路径
npm root-查看当前项目中依赖包的安装路径
npm update 包名-更新依赖包
npm uninstall 包名-卸载依赖包
npm uninstall 包名 -g-卸载全局依赖包
npm listnpm ls查看当前项目下安装的依赖包清单
npm run-查看当前项目中所有的npm Script脚本
4、npm节点管理工具:nrm
  1. 全局安装nrm:npm install nrm -g
  2. nrm ls:显示当前所有的npm接入节点(*标注的是当前使用的节点)。
  3. nrm test:测试所有的npm接入节点的速度,所花费的毫秒数越少越快。
  4. nrm use 节点名称:切换npm接入节点。
  5. nrm current:显示当前节点。
5、npm Script:npm脚本

在package.json文件中有一个键名:scripts,取值为JSON数据。

script:{
	"脚本名称":"脚本代码"
}
//所有的脚本名称,都可以使用npm run + 脚本名称来执行

在这里插入图片描述

6、包管理工具yarn

全局安装yarn工具:npm install yarn -g

命令含义对应npm命令
yarn init初始化项目,在项目根目录生成package.json文件npm init
yarn --version查看yarn工具的当前版本npm -v
yarn add 包名在生产环境下安装依赖包npm install 包名 --save
yarn add 包名 --dev在开发环境下安装依赖包npm install 包名 --save -dev
yarn global add 包名在本地全局安装依赖包npm inatall 包名 -g
yarn install根据package.json文件安装左右的依赖包npm install
yarn upgrade 包名更新依赖包npm update 包名
yarn remove 包名卸载依赖包npm install 包名
yarn run执行package.json中的script脚本npm run
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值