HTML-05NPM使用踩坑
2025-03-04-NPM使用踩坑
本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷,然后一番折腾之后,终究还是没有解决npm的问题😞😞😞,最终使用cnpm完美解决的故事。

文章目录
- 2025-03-04-NPM使用踩坑
- @[toc]
- 1-参考网址
- 2-思路整理
- 3-学习要点
- 4-对比学习
- 1-什么是npm、cnpm两者之间的区别
- 1-npm 概述
- 2-cnpm 概述
- 3-npm 和 cnpm 的区别
- 2-如何使用npm并配置国内镜像源
- 一、安装 npm
- 1. Windows 系统
- 2. macOS 系统
- 3. Linux 系统(以 Ubuntu 为例)
- 二、更换 npm 镜像源为淘宝镜像
- 1. 临时更换
- 2. 永久更换
- 3. 恢复默认镜像源
- 4. 使用 nrm 管理镜像源
- 三、常见问题与解决方案
- 问题 1:输入 `npm login` 直接跳转到 Sign in to CNPM
- 问题 2:使用 `https` 地址时报错 `request to https://registry.npmjs.org/-/v1/login failed, reason: connect ETIMEDOUT`
- 问题 3:报错 `Unexpected token ‘.’`
- 问题 4:安装包时速度慢或失败。
- 3-如何使用cnpm并配置国内镜像源
- 1-安装 cnpm
- 2-全局安装 cnpm
- 3-验证安装
- 4-确保 cnpm 使用淘宝镜像
- 5-查看当前镜像源
- 6-手动设置为淘宝镜像源
文章目录
- 2025-03-04-NPM使用踩坑
- @[toc]
- 1-参考网址
- 2-思路整理
- 3-学习要点
- 4-对比学习
- 1-什么是npm、cnpm两者之间的区别
- 1-npm 概述
- 2-cnpm 概述
- 3-npm 和 cnpm 的区别
- 2-如何使用npm并配置国内镜像源
- 一、安装 npm
- 1. Windows 系统
- 2. macOS 系统
- 3. Linux 系统(以 Ubuntu 为例)
- 二、更换 npm 镜像源为淘宝镜像
- 1. 临时更换
- 2. 永久更换
- 3. 恢复默认镜像源
- 4. 使用 nrm 管理镜像源
- 三、常见问题与解决方案
- 问题 1:输入 `npm login` 直接跳转到 Sign in to CNPM
- 问题 2:使用 `https` 地址时报错 `request to https://registry.npmjs.org/-/v1/login failed, reason: connect ETIMEDOUT`
- 问题 3:报错 `Unexpected token ‘.’`
- 问题 4:安装包时速度慢或失败。
- 3-如何使用cnpm并配置国内镜像源
- 1-安装 cnpm
- 2-全局安装 cnpm
- 3-验证安装
- 4-确保 cnpm 使用淘宝镜像
- 5-查看当前镜像源
- 6-手动设置为淘宝镜像源
1-参考网址
- NpmLogin问题汇总:https://blog.csdn.net/HurryUpp/article/details/134928293
2-思路整理
- 1)[X]遇到需要npmLogin的权限报错->网友推荐更换国内镜像
- 2)[X]但是我跟着小跑一路都没有解决->果断放弃npm
- 3)[√]最终解决方案->使用cnpm完美解决
- 4)[√]如果cnpm遇到下载不了的包->使用pnpm完美解决
3-学习要点
-
1)什么是npm、cnpm两者之间的区别?->NodeJs依赖管理
-
2)如何使用npm并配置国内镜像源
-
3)如何使用cnpm并配置国内镜像源
-
4)核心操作
# 1)安装cnpm-已安装可跳过
- 下载安装cnpm
npm install -g cnpm --registry=https://registry.npmmirror.com
- 使用cnpm下载
cnpm install typescript# 2)安装pnpm-已安装可跳过
- 下载安装pnpm
npm install -g pnpm --registry=https://registry.npmmirror.com
- 使用cnpm下载
pnpm install typescript# 3)如果需要更新源
npm config set registry https://registry.npm.taobao.org/
npm config set registry https://registry.npmmirror.com/
npm config set registry https://registry.npmjs.org/
4-对比学习
1-什么是npm、cnpm两者之间的区别
1-npm 概述
npm 是 Node.js 的包管理器(Node Package Manager),它随着 Node.js 一起安装,是 JavaScript
生态系统中管理项目依赖和共享代码的重要工具。其核心功能与作用体现在以下多个方面:
- 依赖管理:
npm可以帮助开发者方便地安装、更新和删除项目所依赖的软件包。例如,在开发一个基于 React
的前端项目时,你可以使用npm install react react-dom命令来安装 React 和 React DOM 这两个核心库。 - 版本控制:
npm支持语义化版本号(SemVer),可以精确指定项目依赖的软件包版本。在package.json
文件中,你可以看到类似"react": "^18.2.0"这样的版本声明,其中^表示兼容该主版本号下的最新版本。 - 脚本执行:
npm允许在package.json中定义脚本,通过npm run
命令来执行这些脚本。比如,你可以定义一个启动开发服务器的脚本"start": "webpack-dev-server --open"
,然后使用npm run start来启动开发服务器。 - 包发布:开发者可以将自己编写的软件包发布到 npm
公共注册表(registry.npmjs.org),供其他开发者使用。发布后,其他开发者就可以通过npm install命令来安装使用你的包。
2-cnpm 概述
cnpm 是淘宝团队基于 npm 定制的一个镜像版本的包管理器,其目的主要是为了解决国内开发者在使用 npm 安装依赖包时网络速度慢、不稳定的问题。
- 镜像源:
cnpm使用了淘宝的镜像源(https://registry.npmmirror.com ),该镜像源会定期同步 npm
官方注册表的内容,确保软件包的版本和内容与官方一致。 - 安装使用:你可以通过
npm install -g cnpm --registry=https://registry.npmmirror.com命令来全局安装cnpm
,安装完成后就可以像使用npm一样使用cnpm来管理项目依赖。
3-npm 和 cnpm 的区别
- 镜像源
- npm:默认使用的是官方的注册表(registry.npmjs.org),由于服务器位于国外,在国内访问时可能会受到网络限制,导致下载速度较慢,甚至出现连接超时的情况。
- cnpm:使用的是淘宝的镜像源(https://registry.npmmirror.com ),该镜像源位于国内,下载速度通常比官方源快很多,尤其是对于一些体积较大的软件包,优势更为明显。
- 兼容性
- npm:是 Node.js 官方推荐的包管理器,与 Node.js 生态系统的兼容性最好,能够保证安装的软件包与官方发布的版本完全一致。
- cnpm:虽然大部分情况下与
npm兼容,但由于是基于npm
定制的,可能会存在一些细微的差异。在某些特殊场景下,可能会出现安装的软件包与使用npm安装的版本不完全一致的情况,从而导致一些兼容性问题。
- 社区支持
- npm:作为 Node.js 官方的包管理器,拥有庞大的社区支持,几乎所有的 Node.js 项目都会使用
npm
来管理依赖。在遇到问题时,更容易在社区中找到相关的解决方案。 - cnpm:主要是为国内开发者提供便利,社区支持相对较少。如果遇到与
cnpm
相关的问题,可能在社区中找到的解决方案不如npm多。
- npm:作为 Node.js 官方的包管理器,拥有庞大的社区支持,几乎所有的 Node.js 项目都会使用
- 命令使用
- npm:命令使用广泛且标准,很多教程、文档和开源项目都是基于
npm来编写命令示例的。 - cnpm:命令与
npm基本相同,但在一些企业级项目或者对依赖管理要求严格的场景中,可能会优先选择npm
,而在个人开发或者对网络速度要求较高的场景中,cnpm是一个不错的选择。
- npm:命令使用广泛且标准,很多教程、文档和开源项目都是基于
2-如何使用npm并配置国内镜像源
在前端开发中,npm(Node Package Manager)是 Node.js
的官方包管理工具,用于安装、共享和管理项目依赖。本文将详细介绍如何安装 npm、更换镜像源(以淘宝镜像为例),以及解决常见问题。
一、安装 npm
npm 通常会随 Node.js 一起安装,因此我们只需安装 Node.js 即可。
1. Windows 系统
-
下载安装包:
- 访问 Node.js 官方下载页面。
- 选择适合你系统的 Windows 安装包(.msi 文件)。如果你使用的是 64 位系统,建议下载 64 位的安装包;如果是 32 位系统,则下载
32 位的安装包。
-
运行安装程序:
- 双击下载的安装包,按照安装向导的提示进行操作。
- 在安装过程中,你可以选择安装路径等选项,一般保持默认设置即可。
-
验证安装:
- 安装完成后,打开命令提示符(CMD)或 PowerShell,输入以下命令验证
Node.js和npm是否安装成功:node -v npm -v - 如果能正确显示
Node.js和npm的版本号,说明安装成功。
- 安装完成后,打开命令提示符(CMD)或 PowerShell,输入以下命令验证
2. macOS 系统
-
使用安装包安装:
- 访问 Node.js 官方下载页面。
- 选择适合 macOS 的安装包(.pkg 文件),下载后双击运行安装程序,按照提示完成安装。
-
使用 Homebrew 安装:
- 如果你已经安装了 Homebrew,可以使用以下命令安装
Node.js:brew install node
- 如果你已经安装了 Homebrew,可以使用以下命令安装
-
验证安装:
- 安装完成后,打开终端,输入以下命令验证
Node.js和npm是否安装成功:node -v npm -v
- 安装完成后,打开终端,输入以下命令验证
3. Linux 系统(以 Ubuntu 为例)
-
添加 Node.js 源:
- 打开终端,运行以下命令添加 Node.js 官方源:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -- 这里的
18.x是 Node.js 的版本号,你可以根据需要选择其他版本。
- 这里的
- 打开终端,运行以下命令添加 Node.js 官方源:
-
安装 Node.js 和 npm:
- 运行以下命令安装 Node.js 和 npm:
sudo apt-get install -y nodejs
- 运行以下命令安装 Node.js 和 npm:
-
验证安装:
- 安装完成后,输入以下命令验证 Node.js 和 npm 是否安装成功:
node -v npm -v
- 安装完成后,输入以下命令验证 Node.js 和 npm 是否安装成功:
二、更换 npm 镜像源为淘宝镜像
由于网络原因,直接使用官方 npm
镜像源可能会导致安装速度较慢。我们可以将镜像源更换为淘宝镜像(现称为中国镜像,地址为 https://registry.npmmirror.com)。
1. 临时更换
如果你只需要临时使用淘宝镜像源来安装某个包,可以在安装命令中指定镜像源:
npm install <package-name> --registry=https://registry.npmmirror.com
- 将
<package-name>替换为你要安装的包名。
2. 永久更换
如果你希望每次使用 npm 都默认使用淘宝镜像源,可以使用以下命令进行配置:
npm config set registry https://registry.npmmirror.com
- 你可以通过以下命令验证镜像源是否已经成功更换:
npm config get registry- 如果输出为
https://registry.npmmirror.com,则说明镜像源已经成功更换。
- 如果输出为
3. 恢复默认镜像源
如果你想恢复到 npm 的默认镜像源,可以使用以下命令:
npm config set registry https://registry.npmjs.org
4. 使用 nrm 管理镜像源
除了直接使用 npm config 命令来管理镜像源,你还可以使用 nrm(npm registry manager)工具来更方便地切换镜像源。
-
安装 nrm:
npm install -g nrm -
查看可用镜像源:
nrm ls- 该命令会列出所有可用的镜像源,其中包括淘宝镜像(
npmmirror)。
- 该命令会列出所有可用的镜像源,其中包括淘宝镜像(
-
切换镜像源:
nrm use npmmirror- 该命令会将 npm 的镜像源切换为淘宝镜像。
-
测试镜像源速度:
nrm test npmmirror- 该命令会测试淘宝镜像源的响应速度,帮助你选择最快的镜像源。
三、常见问题与解决方案
问题 1:输入 npm login 直接跳转到 Sign in to CNPM
- 原因:使用了淘宝的镜像地址(
https://registry.npmmirror.com/或https://r.cnpmjs.org/)。 - 解决方法:
- 将镜像地址改回官方地址:
npm config set registry http://registry.npmjs.org/- 注意使用
http地址,而不是https地址。
- 注意使用
- 将镜像地址改回官方地址:
问题 2:使用 https 地址时报错 request to https://registry.npmjs.org/-/v1/login failed, reason: connect ETIMEDOUT
- 原因:官方镜像源的
https地址可能在国内网络环境下无法正常访问。 - 解决方法:
- 将镜像地址改为
http地址:npm config set registry http://registry.npmjs.org/
- 将镜像地址改为
问题 3:报错 Unexpected token ‘.’
- 原因:
nvm(Node Version Manager)版本过低,导致Node.js版本也不兼容。 - 解决方法:
- 卸载所有
Node.js版本:nvm uninstall --all - 卸载
nvm:- 在
Node.js安装目录中运行unins000.exe。
- 在
- 重新安装
nvm和Node.js。
- 卸载所有
问题 4:安装包时速度慢或失败。
-
- 解决方法:更换为淘宝镜像源(
https://registry.npmmirror.com),或者使用nrm测试并选择最快的镜像源。
- 解决方法:更换为淘宝镜像源(
3-如何使用cnpm并配置国内镜像源
1-安装 cnpm
cnpm 是淘宝团队基于 npm 定制的一个包管理工具,其镜像源默认指向淘宝镜像,方便国内开发者使用。以下是安装 cnpm 的步骤:
2-全局安装 cnpm
在命令行工具(如 Windows 的命令提示符、macOS 或 Linux 的终端)中执行以下命令来全局安装 cnpm:
npm install -g cnpm --registry=https://registry.npmmirror.com
上述命令中,-g 表示全局安装,--registry=https://registry.npmmirror.com 是指定在安装 cnpm 时使用淘宝镜像源(现称中国镜像),以加快安装速度。
3-验证安装
安装完成后,可以通过查看 cnpm 版本号来验证是否安装成功,执行以下命令:
cnpm -v
如果能正确显示 cnpm 的版本信息,说明安装成功。
4-确保 cnpm 使用淘宝镜像
一般情况下,安装 cnpm 后它默认使用的就是淘宝镜像(https://registry.npmmirror.com)。但为了确保万无一失,你可以通过以下方式进行确认和更改:
5-查看当前镜像源
使用以下命令查看 cnpm 当前使用的镜像源:
cnpm config get registry
如果输出结果是 https://registry.npmmirror.com,则表示已经使用淘宝镜像源。
6-手动设置为淘宝镜像源
若查看的镜像源不是淘宝镜像源,可以使用以下命令将其设置为淘宝镜像源:
cnpm config set registry https://registry.npmmirror.com
设置完成后,再次使用 cnpm config get registry 命令进行验证,确保输出为 https://registry.npmmirror.com。
相关文章:
HTML-05NPM使用踩坑
2025-03-04-NPM使用踩坑 本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷,然后一番折腾之后,终究还是没有解决npm的问题😞😞😞,最终使用cnpm完美解决的故事。 文章目录 2025-03-04-NPM使用踩坑[toc…...
学校地摊尝试实验
学校地摊尝试实验 诸位,我要告诉诸位一件大消息,那就是,我将会利用学校时光的最后一段时间进行疯狂摆摊练习,如何进行摆摊,大家 听我娓娓道来。我要确定摆摊的目的, 第一,赚钱,第二…...
MHA集群
一.MHA集群 MHA master high avavibility 主服务器高可用 如上图所示,我们之前说过,如果在主从复制架构中主服务器出现故障,就需要我们将从服务器作为主服务器,等故障的主服务器修复好之后,再将修好的主服务器作为从服…...
Bazel搭建CUDA工程入门
环境版本: 工程目录: 测试输出: WORKSPACE 参考仓库:CUDA rules for Bazel 及 examples load("bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")http_archive(name "rules_cuda…...
linux awk命令和awk语言
linux awk和awk语言 通常大家说的awk几乎都是在linux/unix中使用的awk命令,见下, https://www.geeksforgeeks.org/awk-command-unixlinux-examples/ 作为命令使用的话,存在下内容 Awk 是一个工具,使程序员能够编写小巧但有效的…...
基于字符的卷积网络在文本分类中的应用与探索
该论文探讨了使用基于字符的卷积网络(ConvNets)进行文本分类的方法,并通过构建大规模数据集展示了其在文本分类任务中的优越性能。与传统的词袋模型、N-gram模型及其TF-IDF变体,以及基于词的卷积网络和循环神经网络等深度学习模型进行了对比。研究发现,基于字符的卷积网络…...
uniapp使用蓝牙,usb,局域网,打印机打印
使用流程(支持安卓和iOS) 引入SDK 引入原生插件包地址如下 https://github.com/oldfive20250214/UniPrinterDemo 连接设备 安卓支持经典蓝牙、ble蓝牙、usb、局域网(参考API) iOS支持ble蓝牙、局域网(参考API&…...
MyBatis 与 JDBC 的关系?
MyBatis 与 JDBC 存在密切的关系,可以理解为:MyBatis 是对 JDBC 的封装和增强,但并没有完全取代 JDBC。 1. JDBC (Java Database Connectivity): 底层 API: JDBC 是 Java 访问数据库的底层 API,它提供了一套标准的接口和类&…...
QILSTE灯珠:尺寸光电全解析
QILSTE灯珠:尺寸光电全解析 🌟 型号H4-115BGRYA/5M,由QILSTE(HongKong)Technology Co., Ltd精心打造,以其1.6x1.5x0.4mm的紧凑外观尺寸,展现高亮红光、翠绿、蓝的缤纷色彩。 📏 尺寸…...
golang从入门到做牛马:第一篇-我与golang的缘分,go语言简介
还记得2018年的夏天,刚毕业的我不知道该做些什么,于是自学了一周的go语言,想要找一份go语言工作的代码,当时的go还没有go mod来管理依赖包,在北京找了一个月的工作,找到了一个小公司做了后端开发,当然使用go语言开发,带着兴奋劲,年轻身体也好,边努力学习,边工作。 时…...
用IdleHandler来性能优化及原理源码分析
背景: 经常在做一些app冷启动速度优化等性能优化工作时候,经常可能会发现有时候需要引入一些第三方sdk,或者库,这些库一般会要求我们在onCreate中进行初始化等,但是onCreate属于生命周期的回调方法,如果on…...
如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)
目录 第一步:下载并安装OfficeAI助手 第二步:申请API Key 第三步:两种方式导入WPS 第一种:本地大模型Ollama 第二种APIKey接入 第四步:探索OfficeAI的创作功能 工作进展汇报 PPT大纲设计 第五步:我的使用体验(体验建议) …...
长短期记忆网络(LSTM)学习指南
长短期记忆网络(LSTM)学习指南 1. 定义和背景 长短期记忆网络(Long Short-Term Memory, LSTM)是一种递归神经网络(RNN)的变体,旨在解决传统RNN在处理长期依赖关系时遇到的梯度消失或爆炸问题。…...
Swagger-01.介绍和使用方式
一.Swagger介绍 有了接口文档,我们就可以根据接口文档来开发后端的代码了。如果我们开发完了某个功能,后端如何验证我们开发的是否正确呢?我们就需要测试,使用Swagger就可以帮助后端生成接口文档,并且可以进行后端的接…...
Unity 使用NGUI制作无限滑动列表
原理: 复用几个子物体,通过子物体的循环移动实现,如下图 在第一个子物体滑动到超出一定数值时,使其放到最下方 --------------------------------------------------------------》 然后不停的循环往复,向下滑动也是这…...
【并发编程】聊聊定时任务ScheduledThreadPool的实现原理和源码解析
ScheduledThreadPoolExecutor 是在线程池的基础上 拓展的定时功能的线程池,主要有四种方式,具体可以看代码, 这里主要描述下 scheduleAtFixedRate : 除了第一次执行的时间,后面任务执行的时间 为 time MAX(任务执行时…...
HarmonyOS Next元服务网络请求封装实践
【HarmonyOS Next实战】元服务网络通信涅槃:深度封装如何实现80%性能跃升与零异常突破 ————从架构设计到工程落地的全链路优化指南 一、架构设计全景 1.1 分层架构模型 #mermaid-svg-VOia4RMx7iqmLnu7 {font-family:"trebuchet ms",verdana,arial,…...
如何在语言模型的参数中封装知识?——以T5模型为例
【摘要】 这篇论文探讨了大型语言模型在无需外部知识的情况下,能否通过预训练来存储和检索知识以回答开放领域的问题。作者通过微调预训练模型来回答问题,而这些模型在训练时并未提供任何额外的知识或上下文。这种方法随着模型规模的增加而表现出良好的…...
微服务的认识与拆分
微服务架构通过将应用分解为一组小的、独立的服务来实现,每个服务围绕特定业务功能构建,并能独立部署与扩展。这种架构增强了开发灵活性、提高了系统的可维护性和扩展性,使得团队可以更快地响应变化和市场需求。 目录 认识微服务 单体架构 …...
Java-servlet(三)Java-servlet-Web环境搭建(下)详细讲解利用maven和tomcat搭建Java-servlet环境
Java-servlet(三)Java-servlet-Web环境搭建(下)利用maven和tomcat搭建Java-servlet环境 前言一、配置maven阿里镜像二、利用IDEA创建maven文件创建maven文件删除src文件创建新的src模版删除example以及org文件 三、在第二个xml文件…...
Spring 构造器注入和setter注入的比较
一、比较说明 在 Spring 框架中,构造器注入(Constructor Injection)和 Setter 注入(Setter Injection)是实现依赖注入(DI)的两种主要方式。它们的核心区别在于依赖注入的时机、代码设计理念以及…...
如何选择DevOps平台?GitHub、GitLab、BitBucket、Jenkins对比与常见问题解答
本文内容来源github.com,由GitHub中国授权合作伙伴-创实信息进行翻译整理。 欢迎通过021-61210910、customershcsinfo.com联系我们,免费试用GitHub企业版。 软件是当今领先企业的核心,而开发者则是软件的核心。GitHub作为一个完整的开发者平台…...
react中的fiber和初次渲染
源码中定义了不同类型节点的枚举值 组件类型 文本节点HTML标签节点函数组件类组件等等 src/react/packages/react-reconciler/src/ReactWorkTags.js export const FunctionComponent 0; export const ClassComponent 1; export const IndeterminateComponent 2; // Befo…...
闭包+求解候选码+最小函数依赖集
一、闭包 直接上例题 简单明了 A的闭包ABC ABC的闭包ABCD ABCD的闭包ABCDE ABCDE的闭包ABCDEG 等于集合R的全集 所以A的闭包为ABCDEG AB的闭包为ABC 二、候选码 答案: 三、最小函数依赖集 求F的最小函数依赖集 去掉多余的 然后! 化为最简...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之功能优化,添加表格空状态提示,带插图的空状态,Table7空状态2
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
Unity Shader 学习15:可交互式雪地流程
本质是 利用顶点变换实现的: 通过一个俯视整个场地的正交摄像机,根据绑定在移动物体身上的粒子系统,来获取物体移动过的位置,记录到一张RenderTexture上作为轨迹图,再通过这张图来对雪地做顶点变换。 1. 由于顶点变换需…...
工具介绍《netcat》
nc(netcat)是一款功能强大的网络工具,被称为“网络瑞士军刀”,支持TCP/UDP协议,广泛用于调试、数据传输、端口扫描、网络连接测试等场景。以下是其详细介绍: 一、核心功能 端口扫描 检测目标主机的端口开放…...
嵌入式开发之串行数据处理
前题 前面几篇文章写了关于嵌入式软件开发时,关于串行数据处理的一些相关内容,有兴趣的可以看看《嵌入式开发:软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十…...
Centos的ElasticSearch安装教程
由于我们是用于校园学习,所以最好是关闭防火墙 systemctl stop firewalld systemctl disable firewalld 个人喜欢安装在opt临时目录,大家可以随意 在opt目录下创建一个es-standonely-docker目录 mkdir es-standonely-docker 进入目录编辑yml文件 se…...
SyntaxError: Unexpected token ‘xxx‘
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...
