node和npm yarn包管理工具
node和包管理工具
今日目标:
1.dos常用指令
2.node的模块化
3.npm包管理工具
4.yarn的常用指令
5.node的内置模块
00-回顾
# Promose:`作用`:解决ajax请求响应顺序不可控的问题`特性`:1. Promise是一个构造函数,需要通过new关键字来实例化,实例化的过程中需要接收一个函数参数,该函数又要接收两个函数参数,分别是resolve和reject2. Promise具有3种状态,分别是`默认的pennding进行中`, `fulfilled已完成`和`rejected已失败`3. 当调用了resolve方法之后,可以将进行中的状态修改为已完成的状态,同时可以触发实例对象的then方法,顺带可以将参数带过去4. 当调用reject方法之后,可以将进行中的状态修改为已失败的状态,同时可以触发实例对象的catch方法,顺带将参数带过去5. 无论是已成功还是已失败,只要Promise的状态发生了改变,就会触发实例对象的finally方法`Promise为什么支持链式调用?` 原型对象上的then,catch和finally都会返回一个新的Promise的实例对象`原型对象上的3个方法`:then: Promise执行成功,触发的实例对象的方法,可以接收resolve传过来的参数catch: Promise执行失败,触发的实例对象的方法,可以接收reject传过来的参数finally: 只要Promise的状态发生了改变,就会触发该实例对象的方法,不能接收参数`Promise的6个静态方法`:all: 同时触发多个Promise,当最后一个Pomise执行成功后,就结束。如果其中有一个失败了,也结束了any: 同时触发多个Promise,只有有一个成功,就结束,如果全都失败,就直接报错race: 同时触发多个Promise, 无论成功或失败,只要有一个Promise的状态发生了改变,就结束allSettled(es2020): 同时触发多个Promise, 无论成功或失败,会等待每一个Promise执行完毕,并返回每一个Promise的状态,以数组接收resolve: 强制将Promise的状态修改为已完成reject: 强制将Promise的状态修改为已失败`Promise解决ajax响应顺序不可控的问题`=> 原理:Promise实例对象上的then方法必须等到resolve之后才可以触发。=> 步骤:1. 在前一个Promise里面发起第一个请求;2. 在请求完成后,将请求的结果resolve出去;3. 在实例对象的then方法中接收参数,并发起新的请求# async和await=> es7的语法。 可以将异步任务同步执行'语法': async 函数名() {await 一个完成的Promise}'示例': async fn() {let 结果 = await new Promise((resolve, reject) => {resolve('await等待的结果')})}=> 注意:1. async要写函数前面,表明该函数内部有异步任务2. await要写在Promise的前面,用来等待Promise的resolve的结果,等到结果之前,是无法执行后面代码的'完美的解决ajax响应顺序不可以控的问题'async fun() {// r1就是axios响应回来的数据let r1 = await axios({method: '请求方式', url: '请求地址', params|data: {提交的参数}})// r2就是axios响应回来的数据let r2 = await axios({method: '请求方式', url: '请求地址', params|data: {提交的参数}}) `注意`:r1没有得到结果前,是不会执行r2的axios请求的}# 事件轮询
`单线程`: JS是一门单线程的语言,在同一时间内,只能执行一个任务,可能会造成代码阻塞
`调用栈`: 存储代码的执行环境的。 执行环境就是代码运行的环境. '先入后出'
`任务队列`: 异步任务存放的位置。宏任务队列和微任务队列
`宏任务`: 整个JS代码, 延时定时器,周期定时器
`微任务`: Promise的then方法
`Web API`: 接收所有的异步任务,消耗定时器的时间,分配给任务队列`事件轮询`:探究同步和异步的执行机制=> '工作原理': 当打开浏览器的时候,事件轮询就开始启动了。每执行一个宏任务,就会清空所有的微任务,再执行一个宏任务,循环往复。直到所有的任务都执行完成
01-dos的常用指令
通过win + r, 输入cmd,打开命令提示符工具 — ‘小黑窗’
Win系统:打开资源管理器,进入对应的目录下面,在地址栏输入’cmd’即可
MAC系统:找到对应的目录,拖到小黑窗里面去
`快速切换盘符`: 盘符名:`查看当前目录下的所有的子目录和子文件`: dir`切换下一级目录`: cd 目录名`切换上一级目录`: cd ../`清屏`: cls|clear`终止程序运行`: Ctrl C'小技巧': 1. 可以通过`tab`键快速切换当前目录下的子目录和子文件;2. 可以通过上下箭头快速切换之前使用过的指令
02-node的概述
`概念`:独立于浏览器的另一个执行js代码的平台`特性`: 1. ECMAScript: js的核心代码; 2. '让js具有了后端编程语言的能力', 比如操作文件,操作数据库等`安装`:1. 打开官网,下载稳定版;2. 双击安装,无脑猛点下一步即可,3. 打开小黑窗输入'node -v'查看版本号。 注意不要安装到中文路径下`node执行js文件`: 鼠标在要执行的js文件上右键,'在终端中打开',通过指令'node js文件'
03-node模块的分类
`可以分为三大类`: 1. 内置模块(nodejs原生提供的)可以直接使用2. 自定义模块(需要手动的导出)3. 第三方模块(需要下载安装然后才可以使用)`四大内置模块`:
1. fs 操作文件或文件夹
2. path 处理路径的模块
3. url 操作网址
4. http 创建本地服务器
03-node的模块化
`模块化`: 每一个js文件都是一个模块,模块和模块之间可以相互导入导出`使用`:=> 导出:module.exports = {}=> 导入:let 变量 = require('路径|模块名')=> 注意: 1. 导出的可以是任意内容,但是一般都是对象; 2. 导出的是什么,导入的就是3. 如果是自己写的js文件,导入的就是'路径名', 如果导入的是node的内置模块或者第三方模块,导入的就是'模块名'
04-npm的常用指令【重点】
npm: 包管理工具
管理: 安装,删除,替换
包:各种第三方的库: swiper axios qs lodashnpm: 只有安装了node,系统自带了npm
# 1. npm init -y: 初始化包管理工具, 自动创建一个package.json文件# 2. 安装第三方的库
// 当使用了指令后,默认会生成一个node_modules目录,所有的模块都会放在里面
// 运行环境:线上环境,真实的网络环境。项目上线后依然要使用的库
// 开发环境:开发阶段。只在开发阶段才使用的库。
// 全局环境:某些库或者资源安装之后,可以生成一个系统的指令。所有的项目都可以使用全局环境的指令=> 默认安装到运行环境: # npm i 模块名=> 安装到开发环境:# npm i 模块名 -D=> 安装到全局环境: # npm i 模块名 -g// 注意:npm的全局安装的路径: 'C:\Users\电脑名字\AppData\Roaming\npm'# 3. 查看库的所有版本
npm view 模块 versions# 4. 安装指定的版本号
npm i 模块@版本号 # 5. 删除指定的模块
npm remove 模块
// npm remove 模块: 删除运行环境和开发环境的模块
// npm remove 模块 -g: 删除全局安装的模块# 6. npm i: 根据package.json和package-lock.json包管理文档将记录下来的模块全部装回来# 7. nvm:控制node版本的工具包:有兴趣需要可以学习!!!
05-package.json文档说明
项目的包管理文档
package-lock.json: 版本锁文件。记录了所有第三方模块的版本号和下载地址。当后面通过npm i指令(或者 yarn 一下)找回所有第三方模块时,安装的也是当前的版本号。
{"name": "03-npm-demo", // 项目的根目录"version": "1.0.0", // 版本号"description": "", // 项目的描述"main": "index.js", // 入口文件"scripts": { # 可执行脚本"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [], // 关键词"author": "", // 作者"license": "ISC", // 开源协议"dependencies": { // 运行环境安装的模块"axios": "^1.2.2"},"devDependencies": { // 开发环境安装的模块"swiper": "^8.4.5"}
}
06-yarn的常用指令【重点】
# 1. 全局安装yarn
npm i yarn -g# 2. yarn init -y: 初始化包管理工具, 自动创建一个package.json文件# 3. 安装第三方的库
// 当使用了指令后,默认会生成一个node_modules目录,所有的模块都会放在里面
// 运行环境:线上环境,真实的网络环境。项目上线后依然要使用的库
// 开发环境:开发阶段。只在开发阶段才使用的库。
// 全局环境:某些库或者资源安装之后,可以生成一个系统的指令。所有的项目都可以使用全局环境的指令=> 默认安装到运行环境: # yarn add 模块名=> 安装到开发环境:# yarn add 模块名 -D=> 安装到全局环境: # yarn global add 模块名: eg: yarn global add rimraf// 注意:yarn的全局安装的路径: 'C:\Users\电脑名字\AppData\Local\Yarn\bin'// rimraf: 能快速删除node_modules# 4. 安装指定的版本号
yarn add 模块@版本号 # 5. 删除指定的模块
yarn remove 模块
// yarn remove 模块: 删除运行环境和开发环境的模块
// yarn remove 模块 -g: 删除全局安装的模块# 6. yarn: 根据package.json和package-lock.json包管理文档将记录下来的模块全部装回来# 注意:用yarn安装了全局模块后,需要配置环境变量: 系统中搜索'查看高级系统设置' => 点击'环境变量'=>双击'path'=>新建=>将yarn的全局安装路径粘贴过来=>点击三个确定
07-node的内置模块–fs
# fs(fileSystem): 操作文件或者文件夹
// fs: 操作文件|文件夹的内置模块let fs = require('fs')// console.log(fs);// 1. 异步读取index.txt这个文件中的内容
// fs.readFile('文件名', 编码格式, 回调函数)
// 文件名: 必填,需要读取的文件
// 编码格式:选填, 读取的文件的内容格式. 默认值是Buffer. 建议使用'utf-8'
// 回调函数: 必填:两个参数
// =》 err: 读取失败的错误信息
// =》 res: 读取成功的返回内容// console.log(111);// fs.readFile('index.txt', 'utf-8', (err, res) => {
// if (err) return console.log(err);
// console.log(res);
// })// console.log(333);// 2. 同步读取文件的内容
// fs.readFileSync('文件', '编码格式')
// '文件': 必填, 读取的文件名
// '编码格式': 选填,默认是Buffer, 建议 'utf-8'
// console.log(111);
// let res = fs.readFileSync('index.txt', 'utf-8')
// console.log(res);
// console.log(222);// 3. 异步写入内容
// fs.writeFile('写入文件', '内容', 回调函数)
// '写入文件': 必填。 如果没有这个文件就自动创建该文件。 如果有直接覆盖写入
// '内容': 必填
// 回调函数:
// 不用参数: 写入之后的反馈 // console.log(111);
// fs.writeFile('index.txt', '你好,小貂蝉', () => {
// console.log('恭喜写入完成了哦');
// })
// console.log(222);// 4. 同步写入内容
// fs.writeFileSync('写入文件', '内容')
console.log(111);
fs.writeFileSync('index1.txt', '你好,小猪佩奇')
console.log(222);
08-node的内置模块–path
// path: 处理路径的模块// 路径:
// 绝对路径
// d:/a/b/c/d.html
// 相对路径
// ./a/b/c.html ../a/b.c.html c.htmllet path = require('path')
// console.log(path);// 1. 拼接相对路径:let res = path.join('a', 'b', 'c/d', 'e.html')console.log(res); // a\b\c\d\e.html// 2. 拼接绝对路径let res1 = path.resolve('a', 'b', 'c/d', 'e.html')
let res2 = path.resolve('C:', 'a', 'b', 'c/d', 'e.html')// 注意:如果第一个参数不是绝对路径:拼接出来的路径是以当前js文件所在的绝对路径作为根路径的
// 注意:如果第一个参数是绝对路径: 拼接出来的路径就会以第一个参数作为根路径console.log(res1); // F:\XA2219\2023-01-09-node和包管理工具\code\06-path内置模块\a\b\c\d\e.html
console.log(res2); // C:\a\b\c\d\e.html// 3. 解析绝对路径: 返回一个对象
let res3 = path.parse('F:/XA2219/2023-01-09-node和包管理工具/code/06-path内置模块/a/b/c/d/e.html')
console.log(res3);
/*
{root: 'F:/', 根路径dir: 'F:/XA2219/2023-01-09-node和包管理工具/code/06-path内置模块/a/b/c/d', 路径的完整信息base: 'e.html', 完整的文件名ext: '.html', 后缀name: 'e' 文件名
}
*/
相关文章:
node和npm yarn包管理工具
node和包管理工具 今日目标: 1.dos常用指令 2.node的模块化 3.npm包管理工具 4.yarn的常用指令 5.node的内置模块 00-回顾 # Promose:作用:解决ajax请求响应顺序不可控的问题特性:1. Promise是一个构造函数,需要通过new关…...

鸿蒙Harmony应用开发—ArkTS(@Link装饰器:父子双向同步)
子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。 说明: 从API version 9开始,该装饰器支持在ArkTS卡片中使用。 概述 Link装饰的变量与其父组件中的数据源共享相同的值。 限制条件 Link装饰器不能在Entry装饰的自定义组件中使用…...

【数据结构】猛猛干7道链表OJ
前言知识点 链表的调试技巧 int main() {struct ListNode* n1(struct ListNode*)malloc(sizeof(struct ListNode));assert(n1);struct ListNode* n2(struct ListNode*)malloc(sizeof(struct ListNode));assert(n2);struct ListNode* n3(struct ListNode*)malloc(sizeof(struc…...

记录C++中,子类同名属性并不能完全覆盖父类属性的问题
问题代码: 首先看一段代码:很简单,就是BBB继承自AAA,然后BBB重写定义了同名属性,然后调用父类AAA的打印函数: #include <iostream> using namespace std;class AAA { public:AAA() {}~AAA() {}void …...

使用 ONLYOFFICE API 构建 Java 转换器,在 Word 和 PDF 之间进行转换
文章作者:ajun 随着文档处理需求的增加,格式转换成为了一个重要的需求点。由于PDF格式具有跨平台、不易被篡改的特性,将Word格式(.docx)转换为PDF格式(.pdf)的需求尤为强烈。ONLYOFFICE作为一个强大的办公套件,提供了这样的转换功…...

SpringCloudAlibaba Nacos配置及应用
Nacos搭建及配置 nacos本机服务搭建 windows上搭建单机nacos: Releases alibaba/nacos GitHub 下载安装包 下载本地,解压,直接运行(保证安装包的绝度路径只有英文字符,有中文会导致运行失败)ÿ…...

#Linux(权限管理)
(一)发行版:Ubuntu16.04.7 (二)记录: (1) (2)-开头代表普通文件 划分为三组: rw- rw- r-- rw-: 文件拥有…...

easyExcel复杂表头导出
代码 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy; import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;import java.util.ArrayList; import java.util.Arrays; imp…...

【大数据】五、yarn基础
Yarn Yarn 是用来做分布式系统中的资源协调技术 MapReduce 1.x 对于 MapReduce 1.x 的版本上: 由 Client 发起计算请求,Job Tracker 接收请求之后分发给各个TaskTrack进行执行 在这个阶段,资源的管理与请求的计算是集成在 mapreduce 上的…...

语义分割实战项目(从原理到代码环境配置)
语义分割(Semantic Segmentation) 先看结果: 是计算机视觉和深度学习领域的一项核心任务,它主要致力于对图像中的每一个像素进行分类,赋予每个像素一个类别标签,以达到理解图像内容的目的。换句话说&#…...

基于python+vue 的一加剧场管理系统的设计与实现flask-django-nodejs-php
二十一世纪我们的社会进入了信息时代,信息管理系统的建立,大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多,而在线管理系统刚好能满足这些需求,在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…...

【Entity Framework】 EF中DbContext类详解
【Entity Framework】 EF中DbContext类详解 一、概述 DbContext类是实体框架的重要组成部分。它是应用域或实例类与数据库交互的桥梁。 从上图可以看出DbContext是负责与数据交互作为对象的主要类。DbContext负责以下活动: EntitySet:DbContext包含…...

智能风扇的新篇章:唯创知音WTK6900G语音识别芯片引领行业革新
随着科技浪潮的推进,智能化技术逐渐渗透到生活的每一个角落,家电领域尤为明显。风扇,这一夏日清凉神器,也通过智能化改造,焕发出前所未有的光彩。其中,智能语音控制功能的加入,为风扇的使用带来…...
[json.exception.type_error.316] invalid UTF-8 byte报错
[json.exception.type_error.316] invalid UTF-8 byte at index 1: 解决方法重新编译程序即可。...

深度强化学习(九)(改进策略梯度)
深度强化学习(九)(改进策略梯度) 一.带基线的策略梯度方法 Theorem: 设 b b b 是任意的函数, b b b与 A A A无关。把 b b b 作为动作价值函数 Q π ( S , A ) Q_\pi(S, A) Qπ(S,A) 的基线, 对策略梯度没有影响: ∇ θ J …...
Oracle修改Number类型精度报错:ORA-01440
修改Number类型的字段的精度SQL ALTER TABLE XXXX MODIFY RATE NUMBER(30,6); 如果表已经存在数据,报错信息如下: ORA-01440: column to be modified must be empty to decrease precision or scale 废话不多说,解决方案如下:…...
美团到店-后端开发一面
1. 介绍一下spring的两大核心思想 2. 介绍一下java的代理,以及动态代理和静态代理的区别 3. spring动态代理是如何生成的,jdk动态代理和cglib的区别 4. 介绍一下synchronized关键字、以及synchronized锁和lock的区别 5. 讲一下java中synchronized的锁升级…...
面试算法-77-括号生成
题目 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n 3 输出:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 解 class Solution {publ…...

webpack5零基础入门-12搭建开发服务器
1.目的 每次写完代码都需要手动输入指令才能编译代码,太麻烦了,我们希望一切自动化 2.安装相关包 npm install --save-dev webpack-dev-server 3.添加配置 在webpack.config.js中添加devServer相关配置 /**开发服务器 */devServer: {host: localhos…...

opengl日记10-opengl使用多个纹理示例
文章目录 环境代码CMakeLists.txt文件内容不变。fragmentShaderSource.fsvertexShaderSource.vsmain.cpp 总结 环境 系统:ubuntu20.04opengl版本:4.6glfw版本:3.3glad版本:4.6cmake版本:3.16.3gcc版本:10.…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...