node和npm

背景(js)

1、为什么js能操作DOM和BOM?

原因:每个浏览器都内置了DOM、BOM这样的API函数

2、浏览器中的js运行环境?

v8引擎:负责解析和执行js代码

内置API:由运行环境提供的特殊接口,只能在所属的运行环境中被调用

3、js能否做后端开发?

js代码想要执行,必须还要借助node.js

node.js

1、什么是node.js?

node.js是一个基于Chrome v8引擎的js运行环境

2、node.js中的js运行环境

  • 浏览器是js的前端运行环境
  • node.js是js的后端运行环境
  • node.js中无法调用DOM和BOM等浏览器内置API

3、node.js可以做什么?

  • 可以基于Express框架,快速构建Web应用
  • 基于Electron框架,可以构建跨平台的桌面应用
  • 基于restify框架,可以快速构建API接口项目

4、在Node.js环境中执行js代码

打开终端;输入node要执行的js文件路径(先切换到文件所在的路径,再输入node xxx.js)

5、终端的快捷键

  • 使用Tab键,可以快速补全路径
  • 使用esc键,可以快速清空当前输入命令
  • 输入cls,可以清空终端

1、定义:Node.js中的第三方模块

2、为什么需要包?

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

npm

1、初次装包后多了哪些文件?

  • node_modules:用来存放所有已安装到项目中的包。require()导入第三方包时,就从这个目录中查找并加载包
  • package-lock.json:用来记录node_modules目录下的每一个包的下载信息

注:程序员不要手动修改node_modules或package-lock.json文件中的代码,npm包管理工具会自动维护它们

2、安装指定版本的包

例:npm i moment@2.22.2

3、包的语义化版本规范

形式:“点分十进制”,总共有三位数字,例:2.24.0

每一位数字代表含义如下:

  • 第一位:大版本
  • 第二位:功能版本
  • 第三位:Bug修复版本

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

4、npm-install命令常用的参数有哪些?

1. npm install <package-name>    //安装指定的包。
2. --save 或 -S                 //将安装的包添加到 dependencies 中(在 npm 5 及以后版本中,默认行为)。
3. --save-dev 或 -D              //将安装的包添加到 devDependencies 中,适用于开发环境。
4. --global 或 -g                //全局安装包,使其可在任何地方使用,而不仅限于当前项目。
5. --production                  //仅安装 dependencies 中的包,跳过 devDependencies,适用于生产环境。
6. --no-save                    //安装时不更新 package.json 文件。
7. --force                    //强制安装,即使在一些错误情况下,也会继续安装。
8. --silent                    //安装时不显示任何日志信息,适用于脚本中。
9. --verbose                    //显示详细的安装过程信息,便于调试。
10. --registry <url>            //使用指定的 npm 注册表进行安装,适用于使用私有注册表的场景。
11. --no-audit                //安装时禁用安全审计。
12. --legacy-peer-deps        //忽略对等依赖的冲突,适用于需要旧版本依赖的项目。

包管理配置文件(package.json)

1、在项目开发中,一定要把node_modules文件夹,添加到.gitignore忽略文件中

node_modules 文件夹通常包含大量的依赖包,这些包可能占用数百兆字节的空间。将其从版本控制中排除,可以显著减少 Git 仓库的大小。

使用包时,通过 npm installyarn install 命令可以自动根据 package.json 文件中的依赖清单安装所需的包

2、快速创建package.json

npm init -y

注:

  • 上述命令只能在英文的目录下成功运行,不能出现空格
  • 运行npm install 命令安装包的时候,npm包管理工具会自动把包的名称和版本号,记录到package.json中

3、dependencies

专门用来记录使用npm install命令安装了哪些包,这里面的包在开发和项目上线之后都需要用到

4、一次性安装所有包(把dependencies中涉及到的所以包都进行安装)

npm install

5、卸载包

npm uninstall 包名

6、devDependencies节点

这里面的包只在项目开发阶段用到,在项目上线后不会用到

npm i webpack -D

7、下包速度慢

为什么下包速度慢?

在使用npm下包时,默认从国外的服务器进行下载,此时,网络数据传输需要经过漫长的海底光缆,因此下包速度会很慢

如何解决下包速度慢?

使用:淘宝NPM镜像服务器

原理:淘宝的镜像服务器会把国外官方服务器上的包同步到国内服务器,同时在国内提供下包的服务,从而极大提高了下包的速度

如何切换npm下包镜像源?

下包镜像源:下包的服务器地址

//查看当前的下包镜像源
npm config get registry//将下包的镜像源切换到淘宝镜像源
npm config set registry=http://registry.npm.taobao.org/( 淘宝镜像源地址)
nrm

作用:更加方便的切换下包的镜像源

具体使用:

//通过npm包管理器,将nrm安装为全局可用的工具
npm i nrm -g//查看所有可用的镜像源
nrm ls//将下包的镜像源切换为taobao镜像
nrm use taobao

8、作用

1、包含项目的名称、版本、描述、作者、许可证等基本信息,帮助其他开发者了解项目。

2、列出项目所需的生产依赖(dependencies)和开发依赖(devDependencies),确保在安装项目时能够自动安装正确的包。

3、可以定义自定义命令(如测试、构建、启动等),通过 npm run  轻松调用

4、通过 version 字段管理项目的版本,便于发布和更新。

5、某些包可以在 package.json 中配置选项,提供项目的特定设置。

6、使用语义版本控制(SemVer)来指定依赖包的版本范围,确保项目在不同环境中的一致性。

7、通过定义项目的环境和依赖,使得项目在不同操作系统和环境中更易于安装和运行。

8、在发布包到 npm 注册表时,package.json 提供了必要的信息配置。

包管理工具下载包的分类

分类:项目包、全局包

项目包

定义:那些被安装到项目的node_modules中的包,都是项目包

分类:

  • 开发依赖包:被记录到devDependencies节点下的包,只在开发期间会用到
  • 核心依赖包:被记录到dependencies节点下的包,在开发期间和项目上线之后都会用到

安装命令区分:

npm i 包名 -D   #开发依赖包
npm i 包名      #核心依赖包

全局包

只有工具性质的包,才有全局安装的必要;判断某个包是否需要全局安装后才能使用,可以参考官方文档的下载命令

安装:
npm i 包名 -g       #全局安装指定的包
安装到:C:\Users\用户目录\AppData\Roaming\npm\node_modules
卸载:
npm uninstall 包名 -g      #卸载全局的包

扩展小工具:

i5ting_toc

作用:可以把md文档转为html页面

使用步骤:

#将i5ting_toc安装为全局包
npm install -g i5ting_toc#调用i5ting_toc,轻松实现md转html的功能
i5ting_toc -f 要转换的文件路径 -o

规范的包结构

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

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

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

相关文章

Python | Leetcode Python题解之第507题完美数

题目&#xff1a; 题解&#xff1a; class Solution:def checkPerfectNumber(self, num: int) -> bool:if num 1:return Falsesum 1d 2while d * d < num:if num % d 0:sum dif d * d < num:sum num / dd 1return sum num

使用预训练的BERT进行金融领域问答

获取更多完整项目代码数据集&#xff0c;点此加入免费社区群 &#xff1a; 首页-置顶必看 1. 项目简介 本项目旨在开发并优化一个基于预训练BERT模型的问答系统&#xff0c;专注于金融领域的应用。随着金融市场信息复杂性和规模的增加&#xff0c;传统的信息检索方法难以高效…

Python 爬虫项目实战:爬取某云热歌榜歌曲

一、网络爬虫的定义 网络爬虫&#xff08;Web Crawler&#xff09;&#xff0c;也成为网页蜘蛛或者网页机器人&#xff0c;是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索以及内容抓取等。 二、爬虫基本原理 1、种子URL&#xff1a;爬…

01 springboot-整合日志(logback-config.xml)

logback-config.xml 是一个用于配置 Logback 日志框架的 XML 文件&#xff0c;通常位于项目的 classpath 下的根目录或者 src/main/resources 目录下。 Logback 提供了丰富的配置选项&#xff0c;可以满足各种不同的日志需求。需要根据具体情况进行配置。 项目创建&#xff0…

CCF-BDCI大数据与计算智能大赛TOP4-京东生鲜

2023 CCF 大数据与计算智能大赛《线上线下全场景生鲜超市库存履约一体化决策》top4南山论剑 摘要1 数据预处理1.1 数据整合1.2 数据划分 2 特征工程2.1 静态特征2.2 动态特征 3 方案设计3.1 数据构造3.2 模型训练3.3 模型融合3.4库存分配3.5 方案对比 链接: CCFBDCI-线上线下全…

解决:如何在opencv中得到与matlab立体标定一样的矫正图?(python版opencv)

目的&#xff1a;采用一样的标定参数&#xff0c;matlab中和opencv中的立体矫正图像是一样的吗&#xff1f;不一样的话怎么让它们一样&#xff1f; 结论&#xff1a;不一样。后文为解决方案。 原因&#xff1a;注意matlab的标定结果在matlab中的用法和在opencv中的用法不一样&a…

STM32 从0开始系统学习2

目录 C语言基础 位操作 extern 修饰符 typedef 封装复杂的类型 寄存器基础知识 STM32F103架构简单描述&#xff08;建议先不看&#xff09; 存储器映射 寄存器映射 寄存器地址计算 下面简单的聊一聊一些需要的前置知识基础。 C语言基础 位操作 这个在单片机里算基操…

Windows通过netsh控制安全中心防火墙和网络保护策略

Windows通过netsh控制安全中心防火墙和网络保护策略 1. 工具简介 【1】. Windows安全中心 【2】. netsh工具 netsh(Network Shell) 是一个Windows系统本身提供的功能强大的网络配置命令行工具。 2. 开启/关闭防火墙策略 在设置端口&#xff08;禁用/启用&#xff09;前&am…

中国人寿财险青岛市分公司普惠金融助力民生保障

普惠金融是金融业的重要组成部分&#xff0c;也是服务实体经济、保障民生的重要途径。国寿财险青岛市分公司始终坚持以人民为中心的发展思想&#xff0c;大力发展普惠金融业务&#xff0c;不断提升金融服务的覆盖面和便捷性。 在服务“三农”方面&#xff0c;国寿财险青岛市分…

【宝塔面板】宝塔面板使用docker部署chatGPT-Next-web

1111111 chatGPT-Next-web大家并不陌生&#xff0c;就是下面的这个界面&#xff0c;下面请大家跟随小编部署下这个web 我们先感谢下源码的博主&#xff1a; https://github.com/Dooy/chatgpt-web-midjourney-proxy 本教程部署也很简单&#xff0c;就2步 1、创建容器编排模版 …

云原生后端概述

目录 云原生后端概述 云原生后端的核心特点 云原生后端的架构组件 云原生后端的常见技术栈 云原生后端与传统后端架构的对比 结论 云原生后端概述 随着企业对数字化转型需求的不断增加&#xff0c;云原生后端逐渐成为构建现代应用程序的核心方法。云原生&#xff08;Clo…

股票基金大通证券申购大宗交易代理-VUE源码开源版

前后端vue开源 服务端java开源 这套是开源的 1.环境 环境 php7.4 sql 5.7 Nginx1.2 tomcat-8 redis 放行1-65535 2.创建5个网站。xxx.com替换你的域名 ftp.xxx.com api.xxx.com agent.xxx.com admin.xxx.com wap.xxx.com api设置反向代理 代理名称 api 目标URL http://127.…

Spring boot快速集成开发

目录 1. 创建 Spring Boot 项目 2. 项目结构 3. 编写代码 3.1 创建实体类 3.2 创建数据访问层 3.3 创建服务层 3.4 创建控制器 4. 配置数据库 5. 启动应用 6. 运行项目 7. 测试 API 8. H2 控制台 在 Spring Boot 中快速集成开发的步骤通常包括创建项目、添加依赖、编写…

Qt 学习第 天:线程与多线程

1024程序员快乐&#xff0c;如果这博客让你学习到了知识&#xff0c;请给我一个免费的赞❤️ 一、创建界面文件 LCDnumber 二、创建mythread类&#xff0c;继承QObject 三、在MyThread.h文件做修改&#xff0c;并且加上函数声明 引入头文件&#xff0c;改变继承 #ifndef MY…

迁移学习|ResNet18

一、导入库 二、设置随机种子 三、数据增强和数据加载 四、加载预训练模型 五、定义损失函数和优化器 六、学习率调度器 七、训练模型 八、可视化训练过程 九、总结 1. 常见优化器概述 1.1 随机梯度下降&#xff08;SGD: Stochastic Gradient Descent&#xff09; 简介&…

C++图形库

建议大家多逛逛GitHub&#xff0c;特别是DevWeekly&#xff0c;它每周都会筛选一些优秀的开源项目、开源工具、技术文章等&#xff0c;可以多去看看。接下来不废话了&#xff0c;列举一些我认为较好的C图形库&#xff0c;希望对大家学习有帮助。 NanoVG NanoVG是一个2D图形库…

使用yield压平嵌套字典有多简单?

我们经常遇到各种字典套字典的数据&#xff0c;例如&#xff1a; nest_dict {a: 1,b: {c: 2,d: 3,e: {f: 4}},g: {h: 5},i: 6,j: {k: {l: {m: 8}}} } 有没有什么简单的办法&#xff0c;把它压扁&#xff0c;变成&#xff1a; {a: 1,b_c: 2,b_d: 3,b_e_f: 4,g_h: 5,i: 6,j_k_l_…

【Linux系统内核探索】进程调度

文章目录 进程调度什么是进程调度&#xff1f;进程调度算法task_struct的链式结构 总结 进程调度 什么是进程调度&#xff1f; 进程调度是操作系统内核的核心功能之一&#xff0c;负责在多个进程之间分配CPU时间&#xff0c;使得系统能够同时运行多个进程。因为计算机的CPU资…

MongoDB的基本操作

&#x1f337;数据库准备 &#x1f388;Mongoshell 1.在指定目录下创建mongodb文件夹、其子文件log和data以及mongodb.log cd /home/ubuntu mkdir -p mongodb/data mkdir -p mongodb/log touch mongodb/log/mongodb.log 执行mongodb命令启动mongdb服务 mongod --dbpath /h…

SwiftUI:单个App支持设置多语言

SwiftUI 全新多语言方案 简化本地化的字符串- WWDC21 - 视频 本地化您的SwiftUI app - WWDC21 - 视频 构建全球化App&#xff1a;本地化的示例- WWDC22 - 视频 构建支持多语言的App - WWDC24 - 视频 单个App支持设置多语言 工程 Info.plist里添加 键值UIPrefersShowingLangua…