首页 > 编程语言 >【Node.js】-包以及npm基本使用操作

【Node.js】-包以及npm基本使用操作

时间:2023-12-15 14:00:57浏览次数:36  
标签:Node npm const dayjs js 软件包 封装

一、包的概念

模块、代码、其他资料聚合成一个文件夹

包分类:

项目包:主要用于编写项目和业务逻辑

软件包:封装工具和方法进行使用

要求:根目录中,必须有package.js文件(记录包的清单信息)

注意:导入软件包时,引入的默认是index.js模块文件/main属性指定的模块文件

【Node.js】-包以及npm基本使用操作_node.js

【Node.js】-包以及npm基本使用操作_node.js_02

二、案例

需求:封装数组求和函数的模块,判断用户名和密码长度函数的模块,形成一个软件包

【Node.js】-包以及npm基本使用操作_node.js_03

/**
 * 目标:封装数组常用的方法
 */
// 数组求和函数
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)


【Node.js】-包以及npm基本使用操作_封装_04


三、npm-软件包管理器

 1.定义

npm是Node.js标准的软件包管理器

起初是作为下载和管理Node.js包依赖的方式

2.使用

初始化清单文件:npm init-y(得到package.json文件,有则略过此命令)

下载软件包:npm i软件包名称

3.使用软件包

【Node.js】-包以及npm基本使用操作_封装_05


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)

【Node.js】-包以及npm基本使用操作_node.js_06

【Node.js】-包以及npm基本使用操作_封装_07

【Node.js】-包以及npm基本使用操作_node.js_08

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基本使用操作_封装_09

【Node.js】-包以及npm基本使用操作_封装_10

五、总结

Node.js包:

模块、代码、其他资料聚合成一个文件夹

包分类:

项目包:主要用于编写项目和业务逻辑

软件包:封装工具和方法进行使用(一般使用npm管理)

本地软件包:作用在当前项目,一般封装的属性/方法,供项目调用编写业务要求

全局软件包:作用在所有项目,一般封装的命令/工具,支撑项目运行

【Node.js】-包以及npm基本使用操作_封装_11

【Node.js】-包以及npm基本使用操作_封装_12

标签:Node,npm,const,dayjs,js,软件包,封装
From: https://blog.51cto.com/u_15858858/8840731

相关文章

  • Nestjs 依赖注入和控制反转
    前言Nest.js是一个使用TypeScript实现的在Node.js环境中运行的Web服务开发框架。它借鉴了很多优秀的设计思想,本文来说一说Nest中的依赖注入和控制反转。依赖注入依赖注入,英文名是DependencyInjection,简称DI。什么是依赖注入?可以分开来看,就是“依赖”和“注入”。您可能......
  • SheetJS 合并后的单元格不能正常显示边框
    原配置样式代码/***设置单元格样式*@paramworksheet工作单元*@paramfirstRow开始行*@paramlastRow结束行*@paramfirstCol开始列*@paramlastCol结束列*@paramfont字号*@paramblod是否加粗*/setCellStyle(worksheet......
  • Python 如何修改并存储 json文件内容 - json package 使用
     直接上代码:importjsondefjson_load(json_file):withopen(json_file,'r')asfh:content=json.load(fh)returncontentfh.close()defjson_save(json_file,data):withopen(json_file,'w',encoding='UTF-8')asf:......
  • 未能加载文件或程序集“Newtonsoft.Json”或它的某一个依赖项。找到的程序集清单定义
    原文链接:https://blog.csdn.net/weixin_45488182/article/details/132537085网上的资料,大都是因为版本号不一致,我检查了很多遍,我这边版本号是12.0.1与12.0.2,config里是12.0.0,应该算是一致的吧。并且清理重新生成后,就不会报这个错。程序可以正常运行了。今天终于解决了这个问题,......
  • JS如何判断文字被ellipsis了?
    在写页面的时候,我们知道想要文本超出宽度后用省略号省略,只需要加上一下的css就行了。.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}如果我们想要当文本被省略的时候,也就是当文本超出指定的宽度后,鼠标悬浮在文本上面才......
  • json好玩的库
    一、DeepDiff DeepDiff是一个Python库,用于比较Python对象的深度差异。能够比较各种数据类型,包括列表、元组、字典、集合、字符串、整数、浮点数等,并给出它们之间的差异。DeepDiff是提供一种简单且易于理解的方式来比较Python对象的差异。安装:pipinstalldeepdiff==6.7.1......
  • 【misc】[西湖论剑 2022]mp3 --js代码,mp3隐写,lsb隐写
    附件下载下来是一个mp3文件,我这里是先试了一下MP3Stego对mp3进行空密码解密发现得到了一个txt,貌似像一个key然后kali中foremost一下mp3,发现得到一张png图片,然后再zsteg查看这张图片‘发现有zip文件,提取出来试一下然后用一开始得到的key可以解密这个加密的压缩包,得到一段加......
  • python: json
     fromtypingimportListimportjsonclassStudent(object):def__init__(self,first_name:str,last_name:str):self.first_name=first_nameself.last_name=last_name@propertydefFirstNmae(self):returnself.f......
  • 2023-12-14 npm和yarn无法拉取依赖,cnpm可以 ==》切换镜像源
    这两天遇到个问题,是关于依赖无法拉取的问题,尽管我有三分猜到了是什么原因,但我还是不肯往那个方向思考,哎,真是死牛一便颈。如,我要给前端项目装个express框架,用npm装,装了大半天一点反应都没有,用yarn装就直接报网络无法连接,如图: 用cnpm装就没问题,秒过。注意:我的电脑是能正常上网......
  • 关于再次出现 Could not open client transport with JDBC Uri: jdbc:hive2://node1:1
    写在最前边——我报错是因为空间不足 当我时隔两个月再次看到这个报错的时候我是感到绝望的————然而当我查了一遍百度发现唯一一个拥有相同报错解决方法的博客出自我之手的时候我的崩溃的————在我发现曾经的方法无法解决现在的我的报错的时候,我觉得我的心都碎了QAQ......