一、包的概念
将模块、代码、其他资料聚合成一个文件夹
包分类:
项目包:主要用于编写项目和业务逻辑
软件包:封装工具和方法进行使用
要求:根目录中,必须有package.js文件(记录包的清单信息)
注意:导入软件包时,引入的默认是index.js模块文件/main属性指定的模块文件
二、案例
需求:封装数组求和函数的模块,判断用户名和密码长度函数的模块,形成一个软件包
/**
* 目标:封装数组常用的方法
*/
// 数组求和函数
const getArraySum = arr => arr.reduce((sum, item) => sum += item, 0)
module.exports = {
getArraySum
}
/**
* 目标:封装校验用户名和密码长度的函数
* 要求:用户名最少 8 位,密码最少为 6 位
*/
const checkUserName = username => {
return username.length >= 8
}
const checkPassWord = password => {
return password.length >= 6
}
module.exports = {
checkUser: checkUserName,
checkPwd: checkPassWord
}
/**
* 本文件是,utils 工具包的唯一出口
* 作用:把所有工具模块方法集中起来,统一向外暴露
*/
const { getArraySum } = require('./lib/arr.js')
const { checkUser, checkPwd } = require('./lib/str.js')
// 统一导出所有函数
module.exports = {
getArraySum,
checkUser,
checkPwd
}
/**
* 目标:导入 utils 软件包,使用里面封装的工具函数
*/
const obj = require('./utils')
console.log(obj)
const result = obj.getArraySum([10, 20, 30])
console.log(result)
三、npm-软件包管理器
1.定义
npm是Node.js标准的软件包管理器
起初是作为下载和管理Node.js包依赖的方式
2.使用
初始化清单文件:npm init-y(得到package.json文件,有则略过此命令)
下载软件包:npm i软件包名称
3.使用软件包
3.案列示例
/**
* 目标:使用 npm 下载 dayjs 软件包来格式化日期时间
* 1. (可选)初始化项目清单文件,命令:npm init -y
* 2. 下载软件包到当前项目,命令:npm i 软件包名称
* 3. 使用软件包
*/
// 3. 使用软件包
const dayjs = require('dayjs')
const nowDateStr = dayjs().format('YYYY-MM-DD')
console.log(nowDateStr)
4.npm安装有所依赖
从别人那里拿到的项目,通常是不包含node_modules,这是因为自己用npm下载依赖比磁盘传递拷贝要快的多
解决:项目终端输入命名:npm i
下载package.json中记录的所有软件包
四、npm全局软件包nodemon
软件包区别:
本地软件包:当前项目内使用,封装属性和方法,存在于node_modules
全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置
作用:替代node命令,检测代码更改,自动重启程序
使用:
1.安装npm i nodemon -g(-g代表安装到全局环境中)
2.运行nodemon待执行的目标js文件
代码示例:
/**
* 目标:使用 nodemon 全局软件包,检测文件变化,自动重启程序
* 语法:
* 1. 安装 nodemon 全局软件包,命令:npm i nodemon -g
* 2. 使用 nodemon 来执行目标 js 文件
* 体验:启动后,修改代码,保存后观察终端效果
*/
// 格式化日期
const dayjs = require('dayjs')
const nowDateStr = dayjs().format('YYYY-MM-DD')
console.log(nowDateStr)
// 求数组里最大值
const _ = require('lodash')
console.log(_.max([1, 55, 2, 3, 4, 8]))
console.log(_.max([1, 10, 2, 3, 4, 8]))
五、总结
Node.js包:
将模块、代码、其他资料聚合成一个文件夹
包分类:
项目包:主要用于编写项目和业务逻辑
软件包:封装工具和方法进行使用(一般使用npm管理)
本地软件包:作用在当前项目,一般封装的属性/方法,供项目调用编写业务要求
全局软件包:作用在所有项目,一般封装的命令/工具,支撑项目运行
标签:Node,npm,const,dayjs,js,软件包,封装 From: https://blog.51cto.com/u_15858858/8840731