Node.js-第三课-模块化 npm和包

目录

一、模块分类

加载模块require()

模块作用域

向外共享模块作用域中的成员

module对象

 module.exports

模块化规范commonJs

二、npm与包

包是什么

npm

如何下载包,通过npm

安装包命令:

安装指定版本的包

包管理配置文件 package.json

快速创建package.json

卸载包

解决下包速度慢的问题

 包的分类

 规范的包结构


一、模块分类

内置模块 :node.js官方提供的例如:fs、path

自定义模块:用户自己创建的.js文件

第三方模块:并非官方提供,也不是用户创建的自定义模块。使用需要先下载

加载模块require()

使用require(),加载模块

内置模块:const fs = require('fs')

自定义模块:const custom = require('./custom.js')// 可以省略后缀名

第三方模块:const moment  = require('moment')

注意:使用require()加载其他模块时,会执行被加载模块中的代码

模块作用域

自定义模块中的变量,方法等成员,只能在当前模块内被访问。这种模块级别的访问限制,叫做模块作用域

好处:防止全局变量污染

向外共享模块作用域中的成员

module对象

每个自定义的模块中。都有一个modules对象,它里面存储了和当前模块有关的信息

 module.exports

使用 module.exports讲模块内的成员共享出去,外界用require()导入自定义模块时,得到的就是module.exports所指向的对象 

exports对象和module.exports指向同一个对象,最终共享的结果,还是以module.exports为准

exports.name = 'gyh'

console.log(module.exports);// { name: 'gyh' }

exports对象和module.exports,使用误区

require()模块,得到的永远都是module.exports

 注意:不建议在同一个模块中,同时使用exports对象和module.exports

模块化规范commonJs

Node.js遵循了CommonJs模块化规范,规定了模块的特效和各模块之间如何相互依赖

  1. 每个模块内部,module变量代表当前模块
  2. module变量时一个对象,他的exports属性,是对外的接口
  3. 加载某个模块,其实是加载该模块的module.exports属性,require()方法用于加载模块

二、npm与包

包是什么

包:第三方模块又叫做同一个概念,叫法不同

由第三方个人或团队开发,免费使用

基于内置模块封装的,提供了更高级、更方便的API,极大的提高了开发效率

包搜索:https://www.npmjs.com/  是全球最大的包共享平台

包下载:https://registry.npmjs.org/ 服务器,对外共享所有的包

npm

如何下载包,通过npm

npm -v 检查是否安装npm

安装包命令:

npm install 包完整名称

npm i 包完整名称// 简写

npm i 包完整名称 包完整名称 包完整名称 // 安装多个包
// 使用第三方包
/* 
1.使用npm安装第三方包:npm i moment
2.导入,使用第三方包,导入的名称就是装包的名称
*/

const moment = require('moment')
const newDt = moment().format("YYYY-MM-DD hh:mm:ss")
console.log(newDt);// 2022-11-18 03:00:13

安装包以后多了哪些文件

node_modules,存放所有已安装项目中的包,require导入时买就是从这个目录中查找并加载对应的包

.package-lock 记录node_modules目录下的每一个包的下载信息,例如:包名,下载地址,版本号

安装指定版本的包

npm i 包名@版本号     最新的版本会覆盖旧的版本

​​​​​​​npm i moment@2.22.2

包的语义化版本规范 三位数字:2.24.0

        第一位数字:大版本

        第二位数字:功能版本

        第三位数字:Bug修复版本

        版本号提升规则:只要前面的版本号增长了,后面的版本号就要归零

包管理配置文件 package.json

package.json。在项目根目录中

记录项目中安装了哪些包,从而方便剔除node_modules后,团队成员之间共享项目源代码
node_modules 添加到 .gitignore 忽略文件中

快速创建package.json

在执行命令时所处的目录中

npm init -y

注意:

        只能在英文目录下成功运行,不要使用中文,空格

        npm i 时,npm包管理工具会自动把包和名称的版本号添加到package.json

dependencies节点

记录npm i 都装了哪些包

devDependencies节点

只在项目开发阶段会用到。项目上线后不会用到,就记录到devDependencies

是否需要安装到devDependencies,包安装方式一般都有

npm i -D 包名

npm i 包名 -D

npm i --save-dev 包名

卸载包

npm uninstall 包名

解决下包速度慢的问题

因为默认时从国外的服务器下载,所以会慢

使用淘宝NPM镜像服务器

切换下包镜像源

#查看当前下包的镜像源​​​​​​​
npm config get registry

#将下包的镜像源指向淘宝
npm config set registry=https://registry.npm.taobao.org/



nrm 工具 快速切换,查看下包的镜像源​​​​​​​

#-g 全局可用的包
npm i nrm - g

#查看可用的镜像源
nrm ls

#切换镜像源
nrm use taobao

注意npm的版本

 包的分类

项目包 安装在项目node_modules 的都是

        项目包分为

                开发依赖包 devDependencies

                核心依赖包  dependencies

全局包

安装时提供了 -g 参数

#安装
npm i 包名  -g 

#卸载
npm uninstall 包名 -g

注意:工具性质的,才有全局安装的必要性

          是否需要全局安装,官方网站会有提示

i5ting_toc  包​​​​​​​把md文档转化为html

npm i -g i5ting_doc

#-o并开打
i5ting_doc -f 要转的md文件路径 -o

 规范的包结构

  1. 包必须以单独的目录存在
  2. 包的顶级目录下必须包含package.json这个包的管理配置文件
  3. package.json中必须包含:name,version,main这三个属性,分别是:包名,版本号,包入口

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高高i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值