class03:npm包管理器

一、导入导出模块

  • 在node中 每一个js文件都是一个模块 => 设置自定义模块功能 => 分工明确
  • node中的js文件根据自身的需要定义模块功能进行拆分
  • node 每个js文件 都是被一个立执行函数包裹
  • 每个js文件都会自传系统参数(5个参数):
  1. exports 导出
  2. require 导入
  3. module模块对象
  4. __ filename 当前文件目录
  5. __ dirname 当前文件夹目录

例:

console.log("导出:", exports)
console.log("导入:", require)
console.log("模块对象:", module)
console.log("当前文件夹目录:", __dirname);
console.log("当前文件:", __filename);

在这里插入图片描述

1. require导入模块

使用require可以导入内置模块或自定义模块。
导入方法:require(“模块名”)或require(“模块名地址”)

例:

const fs = require("fs");  // fs 内置模块
const ds = require("modulePath");  // 引入自定义模块 

注意:引入自定义模块一定要注意模块路径是否正确。

导入模块的时候会执行一次被导入的文件。

require导入输入参数时会区分自定义模块、第三方模块和内置模块。

2. export导出模块

在js文件中将某些属性用export导出,则在其他文件可以用require导入该属性并使用。

例:在test.js文件中导入train.js的属性并输出

// test.js
const m1 = require("./train");
console.log(m1)

// train.js
exports.xxx = 10;
exports.fun = (a, b) => {
    return a + b;
};

在train.js中已导出xxx与fun属性,且在test.js中已导入。

输出:

在这里插入图片描述

可以看到,输出的是一个对象。可以通过es6的解构赋值用 “.” 将其中的某种属性单独输出:

// test.js
const m1 = require("./train");
console.log("xxx:", m1.xxx)
console.log("fun:", m1.fun)

在这里插入图片描述

第二种导出方法: module + "."导出

// train.js
let qwe = 999;
fun = (a, b) => {
    return a + b;
};

module.exports = {
    qwe,
    fun,
};

在这里插入图片描述

总结:要在一个文件中导入其他文件的方法或属性使用require,前提是要先在被导入的文件中使用export导出该方法或属性。

注意:

  • exports.属性名导出 和 module.exports 同时导出时只生效 module.exports;

  • 一个js文件只能使用一次module.exports , 后续再次使用module.exports会覆盖之前写的module.exports;

二、path模块常用方法

path 模块是node.js的内置模块,它提供了一些用于处理文件路径的小工具,我们可以通过以下方式引入该模块:

var path = require("path")

1. extname、parse、basename

//获取文件后缀名
console.log(path.extname("获取文件后缀名:", __filename));
// 将文件路径 序列化
console.log(path.parse("将文件路径序列化:", __filename));
// 获取路径的最后一部分
console.log(path.basename("获取路径的最后一部分:", __dirname));

在这里插入图片描述

2. 合并路径

path.join([path1] [,path2] [, …])

用于连接路径。该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix系统是" / “,Windows系统是” \ "。

// 将多个参数字符串合并成一个路径字符串
console.log(path.join(__dirname,"a","b"));

在这里插入图片描述

3. 查找相对路径

relative(from,to)

from:该文件路径将用作基本路径

to:该文件路径将用于查找相对路径

用于将绝对路径转为相对路径,返回从 from 到 to 的相对路径(基于当前工作目录)。

console.log(path.relative("./train/train.js", "./luoXiaobin/luo/bin.js"));

在这里插入图片描述
在这里插入图片描述

4. 查找绝对路径

path.resolve([from …], to)

to 参数解析为绝对路径,给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。

path.resolve('/foo/bar', './baz');
// 返回: '/foo/bar/baz'

path.resolve('/foo/bar', '/tmp/file/');
// 返回: '/tmp/file'

path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');

在这里插入图片描述

三、npm包管理器

1. 初始化

npm => node包管理器—第三方模块

使用npm来管理node包||模块,需要先初始化 :

npm init

注意:一直回车至出现相关信息(如下图):
初始化成功之后,会自动创建一个 package.json文件;

在这里插入图片描述

简写:npm init -y
注意:该方法不用回车,且文件夹名不能是中文否则会报错;
在这里插入图片描述

2. 生产环境与开发环境

npm 官网:https://www.npmjs.com

可使用npm下载第三方包,该包可以放在两种环境中:

生产环境 : 代码开发完毕,项目已经上线了。只剩下维护,增新。dependencies:生产会被打包进去

开发环境 : 还在写代码的阶段。devDependencies:开发环境的包,不会被打包进去

在这里插入图片描述

下载第三方模块:-S 就是生产环境,默认是生产环境;-D 开发环境

npm  install + 包名 + 环境
npm  i + 包名 + 环境   // 下载速度较慢

使用镜像可以加快下载速度:

// 淘宝镜像
https://npm.taobao.org/      
npm install -g cnpm

换源也可以加快下载速度:

换源:将npm下载地址转换国内的cnpm

// 淘宝源(不推荐)
npm config set registry https://registry.npm.taobao.org 
// 更换源--切换回原镜像(推荐)
npm config set registry https://registry.npmjs.org

查询镜像:

npm config get registry

当下载某个包后会在同目录下生产node_modules目录,该目录专门放置下载的第三方包或模块;

package.json文件记录了配置项目信息及模块信息;

package-lock.json 锁定模块的版本;

将package.json和package-lock.json文件发给其他程序员,使用npm i 就会自动下载文件里相应的模块或包的版本。

3. 常用npm命令

// 初始化项目
npm  init -y 

// 下载包及安装位置(install:简写i,自动下载最新的)
npm  install + 包或模块名 + 环境

// 卸载包或模块,(uninstall:简写un)
npm  uninstall  + 包或模块名 + 环境

npm install express --save  	// 安装一个包在生产环境,简写: npm i express -S
npm install express --save-dev  // 安装一个包在开发环境,简写: npm i express -D

// 安装指定版本包或模块--- 版本和版本之间会有什么区别: 优化和增新或废弃api
npm i + 包名@版本号  // 例:  npm i nodemon@2.0.11

// 更新版本包或模块
npm update + 包名    // 例:npm update  nodemon

4. nodemon包

nodemon 可以使代码只要保存就会自动重新启动node代码,只需要启动一次就好 ,后面就自动了。即热更新。

安装:

win + R输入cmd打开命令行工具,输入:

npm i -g nodemon  // -g 全局安装

在这里插入图片描述

启动:

在需要热更新的文件终端输入:

nodemon 文件名

完成上述步骤后,相应文件就可以进行热更新,点击保存即可自动运行代码。

在这里插入图片描述

5. 小知识

常用命令

cd 打开文件夹 …/ 上层

d: 跳转到d盘

c: 跳转到c盘

dir 打印当前目录的所有文件

md 创建文件夹

rd 删除文件夹

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Laker 23

要秃啦,支持一下嘛~

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

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

打赏作者

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

抵扣说明:

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

余额充值