13. npm软件包管理器和Node.js常用命令总结

news2025/2/24 11:34:39

一.包的概念

1. 包:

将模块,代码,其他资料整合成一个文件夹,这个文件夹就叫包

2. 包分类:

  • 项目包:主要用于编写项目和业务逻辑
  • 软件包:封装工具和方法进行使用

3. 包要求:

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
在这里插入图片描述

4. 包使用:

在引入一个包文件夹到代码中,默认引入的是包文件节下的 index.js 模块文件里导出的对象,如果没有 index.js 文件,则会引入 package.json 里 main 属性指定的文件模块导出的对象

5. 需求:

封装数组求和函数的模块,封装判断用户名和密码长度函数的模块,形成一个软件包,并导入到 index.js 中使用查看效果

6. 代码示例:

  • utils/lib 相关代码在素材里准备好了,只需要自己在 utils/index.js 统一出口进行导出

    /**
     * 本文件是,utils 工具包的唯一出口
     * 作用:把所有工具模块方法集中起来,统一向外暴露
     */
    const { getArraySum } = require('./lib/arr.js')
    const { checkUser, checkPwd } = require('./lib/str.js')
    
    // 统一导出所有函数
    module.exports = {
      getArraySum,
      checkUser,
      checkPwd
    }
    
    
  • index.js 导入软件包文件夹使用(注意:这次导入的是包文件夹,不是模块文件)

    /**
     * 目标:导入 utils 软件包,使用里面封装的工具函数
     */
    const obj = require('./utils')
    console.log(obj)
    const result = obj.getArraySum([10, 20, 30])
    console.log(result)
    

二.npm软件包管理器

1. npm 简介:

软件包管理器,用于下载和管理 Node.js 环境中的软件包

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2. npm 使用步骤:

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

    注意 -y 就是所有选项用默认值,所在文件夹不要有中文/特殊符号,建议英文和数字组成,因为 npm 包名限制建议用英文和数字或者下划线中划线

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

  3. 使用软件包

3. 需求:

使用 npm 下载 dayjs 软件包到本地项目文件夹中,引入到 index.js 中格式化日期打印,运行观察效果

4. 具体使用流程图:

在这里插入图片描述

三.npm安装所有依赖

1. 我们拿到了一个别人编写的项目,但是没有 node_modules,项目能否正确运行?

不能,因为缺少了项目需要的依赖软件包,比如要使用 dayjs 和 lodash 但是你项目里没有这个对应的源码,项目会报错的

2. 为何没有给我 node_modules?

因为每个人在自己的本机使用 npm 下载,要比磁盘间传递要快(npm 有缓存在本机)

3. 如何得到需要的所有依赖软件包呢?

直接在项目目录下,运行终端命令:npm i 即可安装 package.json 里记录的所有包和对应版本到本项目中的 node_modules

在这里插入图片描述

4. 需求:

请在准备好的素材项目中,安装项目所有需要的依赖软件包,并运行 index.js 代码看是否正常!

四.npm全局软件包-nodemon

1. 软件包区别:

  • 本地软件包:当前项目内使用,封装属性和方法,存在于 node_modules
  • 全局软件包:本机所有项目使用,封装命令和工具,存在于系统设置的位置

2. nodemon 作用:

替代 node 命令,检测代码更改,自动重启程序

3. 使用:

  1. 安装:npm i nodemon -g (-g 代表安装到全局环境中)
  2. 运行:nodemon 待执行的目标 js 文件

4. 需求:

使用 nodemon 命令来启动素材里准备好的项目,然后修改代码保存后,观察终端重启应用程序

五.Node.js概念和常用命令总结

1. Node.js 模块化:

把每个文件当做一个模块,独立作用域,按需加载,使用特定标准语法导出和导入使用

CommonJS 标准:一般应用在 Node.js 项目环境中

ECMAScript 标准:一般应用在前端工程化项目中

在这里插入图片描述

在这里插入图片描述

2. Node.js 包:

把模块文件,代码文件,其他资料聚合成一个文件夹就是包

项目包:编写项目需求和业务逻辑的文件夹

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

  • 本地软件包:作用在当前项目,封装的属性/方法,供项目调用编写业务需求
  • 全局软件包:作用在所有项目,一般封装的命令/工具,支撑项目运行

在这里插入图片描述

3. Node.js 常用命令:

在这里插入图片描述

小结

1. 什么是包?

将模块,代码,其他资料聚合成的文件夹

2. 包分为哪 2 类呢?

项目包:编写项目代码的文件夹,软件包:封装工具和方法供开发者使用

3. package.json 文件的作用?

记录软件包的名字,作者,入口文件等信息

4. 导入一个包文件夹的时候,导入的是哪个文件?

默认 index.js 文件,或者 main 属性指定的文件

5. npm 软件包管理器作用?

下载软件包以及管理版本

6. 初始化项目清单文件 package.json 命令?

npm init -y

7. 下载软件包的命令?

npm i 软件包名字

8. 下载的包会存放在哪里?

当前项目下的 node_modules 中,并记录在 package.json 中

9. 当前项目中只有 package.json 没有 node_modules 怎么办?

当前项目目录下,打开终端,执行 npm i 安装所有依赖软件包

10. 为什么 node_modules 不进行传递?

因为用 npm 下载有缓存在本机,比磁盘之间传递要快

11. 本地软件包和全局软件包区别?

本地软件包,作用在当前项目,封装属性和方法
全局软件包,本地所有项目使用,封装命令和工具

12. nodemon 作用?

替代 node 命令,检测代码更改,自动重启程序

13. nodemon 怎么用?

先确保安装 npm i nodemon -g
使用 nodemon 执行目标 js 文件

14. 安装本地软件包的命令是什么?

npm i 软件包名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1505313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gprof安装使用(CMake)说明

一、安装 1、gprof默认已安装,可安装相关图形处理 sudo apt-get install python graphviz sudo pip install gprof2dot 注意:在Debian中没有安装成功,报Python的版本不匹配 二、使用说明 1、使用CMake管理的工程: 重新配置CMa…

6 种 卷积神经网络压缩方法

文章目录 前言 1、低秩近似 2、剪枝与稀疏约束 3、参数量化 4、二值化网络 (1)二值网络的梯度下降 (2)两个问题 (3)二值连接算法改进 (4)二值网络设计注意事项 5、知识蒸馏 6、浅层 …

eclipse -XX:+PrintGCDetails

eclipse -XX:PrintGCDetails

二 超级数据查看器   讲解稿   导入功能

二 超级数据查看器 讲解稿 导入功能 APP下载地址 百度手机助手 下载地址4 ​ 讲解稿全文: 大家好。 今天我们对 超级数据查看器的 导入信息功能 做一下详细讲解。 首先,我们打开 超级数据查看器。 我们这个系统要实现的是,快速生…

基于粒子群(PSO)的PID控制器matlab仿真

算法实现简介 利用粒子群算法对 PID 控制器的参数进行优化设计,其过程如图 所示。 图中,粒子群算法与 Simulink 模型之间连接的桥梁是粒子(即 PID 控制器参数)和该粒子对应的适 应值(即控制系统的性能指标&#xff09…

sql server 恢复数据库、恢复单表数据的方法

如果不小心把某个表的数据删了,可以用之前的备份文件对单表进行数据恢复。 1、新建一个数据库(全新的数据库),记得路径,恢复的时候要用到,新建完不要对数据库做什么操作。 2、用需要恢复表的数据库的备份文…

遗传算法GA求解机器人栅格地图最短路径规划,可以自定义地图及起始点(提供MATLAB代码)

一、原理介绍 遗传算法是一种基于生物进化原理的优化算法,常用于求解复杂问题。在机器人栅格地图最短路径规划中,遗传算法可以用来寻找最优路径。 遗传算法的求解过程包括以下几个步骤: 1. 初始化种群:随机生成一组初始解&…

一款开源、免费、跨平台的Redis可视化管理工具

前言 经常有小伙伴在技术群里问:有什么好用的Redis可视化管理工具推荐的吗?, 今天大姚给大家分享一款我一直在用的开源、免费(MIT License)、跨平台的Redis可视化管理工具:Another Redis Desktop Manager。 Redis介绍…

再探再报 除 0 这件事有不同

首先,在数学中,一个数除以0是没有意义的。 其次,在计算机中,对于除零,传统概念里是会上报一个异常。首先是CPU内部实现会报异常。最早学组成原理和汇编的时候,都是说CPU寄存器中有个表示除零异常的位。在L…

你应该打好你的日志,起码避免被甩锅

大家好,我是蓝胖子,相信大家或多或少都有这样的经历,当你负责的功能出现线上问题时,领导第一时间便是找到你询问原因,然而有时问题的根因或许不在你这儿,只是这个功能或许依赖了第三方或者内部其他部门,这个…

Github 2024-03-10php开源项目日报Top10

根据Github Trendings的统计,今日(2024-03-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:75969 个Fork数量:24281 次…

数据结构——算法的空间复杂度

【本节内容】 1.空间复杂度 2.常见空间复杂度 1.空间复杂度 空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用额外存储空间大小的量度。 空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算…

w7安装高版本nodejs

Win7系统可直接安装的最高nodejs版本为13.14,以为要换系统了,不过,网上找到了方法可以安装高版本 我是配置好环境变量后开始操作的(因为之前试了其他方法,没成功,环境变量就留下了) 新建变量NO…

NGINX源码安装详细配置文档

NGINX源码安装详细配置文档 一、基础Linux指令 查看nginx进程是否启动:ps -ef | grep nginx 关闭防火墙:systemctl stop firewalld 开放80端口:firewall-cmd --zonepublic --add-port80/tcp --permanent 关闭80端口:firewall-cmd …

静态路由--添加路由表,实现非直连网段的通信

建立拓扑: 路由器**只有直连网段的路由表,而对非直连并不拥有,因此要在路由器的路由表中手动添加非直连网段的路由. ** 也就是说对于AR2来说,**网段192.168.10.0**和**网段192.168.40.0**是他的直连网段。进一步说这两个网端的设备可以相互通信而网段19…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景:开发者A,开发者B在同一个项目协同开发,修改同一个代码文件。开发者A在Win10下,开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…

ELF 1技术贴|在NXP源码基础上适配开发板的按键功能

本次源代码适配是在NXP i.MX6ULL EVK评估板的Linux内核源代码(特定版本号为Linux-imx_4.1.15)的基础中展开的。 首要任务集中在对功能接口引脚配置的精细调整,确保其能无缝匹配至ELF 1开发板。接下来,我们将详细阐述适配过程中关…

(南京观海微电子)——Gamma调试

1.什么是Gamma? Gamma的概念源自于CRT响应曲线,最开始是用于反映显像管的图像亮度与输入电子枪的信号电压之间,非线性关系的一个参数。对于CRT显示器而言,电子流大小影响显示的图像亮度大小,而电子流大小与输入电压间…

分割模型TransNetR的pytorch代码学习笔记

这个模型在U-net的基础上融合了Transformer模块和残差网络的原理。 论文地址:https://arxiv.org/pdf/2303.07428.pdf 具体的网络结构如下: 网络的原理还是比较简单的, 编码分支用的是预训练的resnet模块,解码分支则重新设计了。…

数据结构奇妙旅程之二叉平衡树

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …