Node.js(2)模块与包

一、模块(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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值