找到
177
篇与
技术教程
相关的结果
-
8 个 CSS Reset 技巧,兼容性问题减少 85% CSS Reset 是构建稳定跨浏览器样式的基础,可以消除 HTML 元素在不同的浏览器中默认样式的差异。分享一些现代化的 CSS Reset 技巧,帮助你解决大部分浏览器兼容性问题,提高开发效率。 图片 1. 现代化盒模型重置 使用更智能的盒模型重置,确保元素尺寸计算的一致性。 *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; /* 防止边距塌陷 */ min-height: 0; min-width: 0; } html { /* 修复iOS点击高亮问题 */ -webkit-tap-highlight-color: transparent; /* 平滑滚动 */ scroll-behavior: smooth; } /* 防止超长内容破坏布局 */ img, picture, video, canvas, svg { display: block; max-width: 100%; }2. 排版基础重置 统一各浏览器的文本渲染表现。 body { line-height: 1.5; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; /* 改善CJK文本的显示 */ -webkit-text-size-adjust: 100%; } /* 统一标题样式 */ h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; } /* 重置链接样式 */ a { color: inherit; text-decoration: none; }3. 表单元素标准化 消除表单元素的浏览器默认样式差异。 图片 4. 列表样式重置 统一列表显示效果。 图片 5. 媒体元素优化 确保媒体元素在各浏览器中的一致表现。 图片 6. 滚动条行为统一 统一各浏览器的滚动条行为。 图片 7. 触摸操作优化 优化移动设备的触摸体验。 图片 8. 打印样式优化 确保网页在打印时的正确显示。 @media print { /* 打印时的颜色和背景处理 */ * { -webkit-print-color-adjust: exact; print-color-adjust: exact; color-adjust: exact; } /* 避免打印时断页问题 */ a { page-break-inside: avoid; } /* 确保打印时显示完整的URL */ a[href^="http"]::after { content: " (" attr(href) ")"; } }欢迎补充。
-
一个浏览器就能拥有一个完整操作系统 简介 互联网操作系统 Puter 是一个先进的开源桌面环境,它运行在浏览器中,并具备丰富的功能、异常快速以及高度可扩展性。 它是一个功能丰富、快速且可扩展的开源桌面环境,提供了多种应用场景和便利工具,满足用户在不同场景下的需求。 主要特征 远程桌面环境:允许用户从任何地方访问桌面环境进行工作、娱乐等操作 云存储服务:所有文件可保存在安全的地方并随时随地访问 Web 托管平台:支持构建和托管网站、Web 应用程序和游戏 替代传统云盘:提供清新界面和强大功能替代 Dropbox/Google Drive 等 应用场景 个人使用:作为个人云盘随时随地访问管理文件 企业应用:构建远程工作桌面提供便捷环境 开发者工具:用于构建和托管网站/应用/游戏 技术特点 隐私至上:用户数据和隐私充分保护 跨平台兼容:基于 Web 技术可在多平台运行 高度可扩展:支持根据需求定制系统 友好社区:提供学习 Web 开发/云计算等知识的开源社区 GitHub 地址:隐藏内容,请前往内页查看详情 官方网站:隐藏内容,请前往内页查看详情 官方文档:隐藏内容,请前往内页查看详情安装部署 Docker 部署流程: 安装 Docker sudo apt update sudo apt install -y docker.io docker-compose 拉取镜像 sudo docker pull ghcr.io/heyputer/puter 启动服务 sudo docker run --rm -p 4100:4100 \ -v `pwd`/puter/config:/etc/puter \ -v `pwd`/puter/data:/var/puter \ ghcr.io/heyputer/puter 访问地址:http://[IP]:4100 图片 图片 图片
-
PS教程超级合辑【1000集2017版】 - 带源码课件 课程描述 本合辑包含 1000 集 PS 教程,涵盖从入门到精通的全方位学习内容。课程包括 6 大商用专题(抠图、移除、换色、调色、锐化、磨皮)和 5 大应用领域(图像后期、平面设计、UI 设计、商业插画、3D 打印),适合初学者和进阶学习者。 6v6博客图片 课程亮点 全面系统:从基础到高级,1000 集教程覆盖 PS 所有核心功能。 商用专题:6 大商用专题,解决实际工作中的设计难题。 应用领域:5 大应用领域深入拓展,满足不同设计需求。 实战案例:海量初、中、高级不同难度的精美实战案例。 课程价格 原价:299 元 免费提供:本资源为免费分享,无需付费即可获取。 资源链接 👉 点击这里获取 PS 教程超级合辑资源 适合人群 PS 初学者 平面设计师、UI 设计师 对图像后期、商业插画、3D 打印感兴趣的学习者 学习建议 从基础教程开始,逐步掌握 PS 的核心功能。 针对自己的需求,重点学习 6 大商用专题和 5 大应用领域。 通过实战案例巩固所学知识,提升设计能力。 6v6 博客 更多优质资源,尽在 6v6 博客!
-
QQ 邮箱如何获取 SMTP 授权码 + SMTP 使用教程 SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的协议。QQ 邮箱提供了 SMTP 服务,允许用户通过第三方客户端或应用程序发送邮件。为了确保账户安全,QQ 邮箱要求使用 SMTP 授权码而非邮箱密码进行身份验证。本文将详细介绍如何获取 SMTP 授权码,并提供使用教程。 图片 一、获取 QQ 邮箱 SMTP 授权码 登录 QQ 邮箱 打开浏览器,访问 QQ 邮箱官网:https://mail.qq.com。 输入您的 QQ 邮箱账号和密码,完成登录。 进入邮箱设置 登录后,点击页面右上角的“设置”按钮(齿轮图标)。 在设置菜单中,选择“账户”选项。 开启 SMTP 服务 在“账户”页面中,向下滚动找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务”部分。 找到“IMAP/SMTP 服务”选项,点击右侧的“开启”按钮。 获取授权码 开启 SMTP 服务后,系统会提示您通过手机验证身份。 按照页面提示,使用绑定的手机号发送指定短信内容到指定号码。 发送短信后,点击“我已发送”按钮,系统会生成一个 16 位的 SMTP 授权码。 请务必妥善保存此授权码,因为它只会显示一次。 图片 图片 图片 图片 二、SMTP 授权码的使用教程 获取 SMTP 授权码后,您可以将其用于配置第三方邮件客户端或应用程序(如 Outlook、Thunderbird、Foxmail 等)以发送邮件。以下是具体配置步骤: 1. 配置 Outlook 客户端 打开 Outlook,点击“文件” > “添加账户”。 输入您的 QQ 邮箱地址,选择“手动设置或其他服务器类型”,点击“下一步”。 选择“POP 或 IMAP”,点击“下一步”。 在服务器设置中,填写以下信息: 接收邮件服务器:imap.qq.com,端口:993,加密方式:SSL/TLS。 发送邮件服务器:smtp.qq.com,端口:465,加密方式:SSL/TLS。 在登录信息中,输入您的 QQ 邮箱地址和 SMTP 授权码。 点击“下一步”完成配置。 2. 配置 Thunderbird 客户端 打开 Thunderbird,点击“菜单” > “新建” > “现有邮件账户”。 输入您的 QQ 邮箱地址和 SMTP 授权码,点击“继续”。 Thunderbird 会自动检测服务器设置。如果没有自动检测成功,请手动填写以下信息: 接收邮件服务器:imap.qq.com,端口:993,加密方式:SSL/TLS。 发送邮件服务器:smtp.qq.com,端口:465,加密方式:SSL/TLS。 点击“完成”保存配置。 3. 配置 Foxmail 客户端 打开 Foxmail,点击“工具” > “账户管理”。 点击“新建”按钮,输入您的 QQ 邮箱地址和 SMTP 授权码。 选择“IMAP”或“POP3”作为接收服务器类型。 填写以下服务器信息: 接收邮件服务器:imap.qq.com,端口:993,加密方式:SSL/TLS。 发送邮件服务器:smtp.qq.com,端口:465,加密方式:SSL/TLS。 点击“确定”完成配置。 4. 配置其他应用程序 如果您需要在其他应用程序(如 WordPress、Python 脚本等)中使用 QQ 邮箱的 SMTP 服务,请确保填写以下信息: SMTP 服务器地址:smtp.qq.com 端口:465(SSL/TLS)或 587(STARTTLS) 用户名:您的 QQ 邮箱地址(如123456789@qq.com) 密码:SMTP 授权码 图片 三、注意事项 授权码的安全性 SMTP 授权码是您的邮箱账户的重要凭证,请勿泄露给他人。 如果怀疑授权码泄露,请立即在 QQ 邮箱设置中关闭 SMTP 服务并重新生成授权码。 授权码的有效性 SMTP 授权码长期有效,但如果您关闭了 SMTP 服务或重新生成授权码,旧的授权码将立即失效。 端口和加密方式 确保使用正确的端口和加密方式,否则可能导致无法发送邮件。 推荐使用端口465和SSL/TLS加密方式。 国际邮箱地址 如果您的 QQ 邮箱是国际邮箱(如xxx@foxmail.com),SMTP 服务器地址和配置步骤与普通 QQ 邮箱相同。 四、常见问题解答 为什么无法发送邮件? 检查 SMTP 服务器地址、端口和加密方式是否正确。 确保输入的 SMTP 授权码无误。 确认您的网络环境是否允许访问 QQ 邮箱的 SMTP 服务器。 如何重新生成 SMTP 授权码? 进入 QQ 邮箱的“账户”设置,关闭 SMTP 服务后重新开启,即可生成新的授权码。 SMTP 授权码和邮箱密码有什么区别? SMTP 授权码仅用于第三方客户端或应用程序的邮件发送功能,而邮箱密码用于登录 QQ 邮箱网页版或客户端。 通过以上步骤,您可以轻松获取 QQ 邮箱的 SMTP 授权码,并配置到各种邮件客户端或应用程序中。如果您在配置过程中遇到问题,可以参考 QQ 邮箱的官方帮助文档或联系客服支持。
-
少数人知道的 10 个神奇 CSS 选择器 在 Web 开发中,CSS 扮演着至关重要的角色,但很多开发者并没有真正发掘它的全部潜力! 大多数人熟悉 ID 选择器、类选择器或元素选择器,甚至伪元素的使用也很常见。然而,你知道 CSS 其实还有许多不为人知的强大选择器吗? 今天,就带你揭秘一些鲜有人知但却非常实用的 CSS 选择器,让你在样式控制上更上一层楼! 图片 1. 属性选择器 属性选择器可以根据 HTML 元素的属性来应用样式,而无需额外添加类或 ID。 基础属性选择器 a[href] { color: blue; }这个选择器会为所有包含 href 属性的 <a> 元素添加蓝色字体样式。 指定属性值的选择器 input[type="text"] { border: 1px solid #ccc; }此规则仅作用于 type="text" 的输入框。 匹配部分属性值的选择器 /* 以某个值开头(^=) */ a[href^="https"] { color: green; } /* 以某个值结尾($=) */ a[href$=".pdf"] { color: red; } /* 包含某个值(*=) */ a[href*="example"] { color: orange; }这些选择器可以分别选中以 https 开头的链接、以 .pdf 结尾的链接,以及包含 example 关键字的链接,并应用不同的样式。 2. :nth-child() 选择器 该伪类选择器可以基于元素在其父元素中的位置来应用样式: li:nth-child(odd) { background-color: #f9f9f9; }这将使奇数序号的 <li> 元素具有不同的背景颜色。 3. :not() 选择器 想要排除某些特定元素?:not() 选择器可以帮你实现: button:not(.primary) { background-color: grey; }以上代码会为所有 不 具有 .primary 类的 <button> 按钮应用灰色背景。 4. :focus 选择器 提升用户体验和可访问性的一种方式是给获取焦点的元素添加样式: input:focus { outline: 2px solid blue; }当输入框获得焦点时,会显示一个蓝色的外边框。 5. ::before 和 ::after 伪元素 这两个伪元素可以在某个元素的前后插入内容,无需修改 HTML 结构: h1::before { content: "§ "; color: grey; } p::after { content: " (阅读更多)"; color: blue; }上面的示例会在所有 <h1> 标题前添加灰色的 "§ " 符号,并在每个 <p> 段落后面附加 "(阅读更多)" 的蓝色文本。 6. ::first-line 选择器 想让段落的首行样式有所不同?可以这样做: p::first-line { font-weight: bold; color: red; }这会让段落的首行变成 加粗 且 红色。 7. ::first-letter 选择器 如果你想让段落的首字母更具视觉吸引力,可以使用 ::first-letter: p::first-letter { font-size: 2em; color: green; }这样,所有段落的第一个字母都会被放大,并且颜色变成绿色。 8. :empty 选择器 这个选择器可以选中 没有子元素(包括文本内容)的 HTML 元素: div:empty { border: 1px dashed red; }这样,所有空的 <div> 元素都会带有红色虚线边框。 9. :checked 选择器 专门用于选中 复选框(checkbox) 或 单选按钮(radio) 的样式控制: input[type="checkbox"]:checked + label { font-weight: bold; }当复选框被选中时,相关的 <label> 标签会变成加粗字体。 10. 组合选择器 CSS 选择器可以组合使用,以实现更精准的样式控制。例如: a[href^="https"]:not([href*="example"])::after { content: " (安全)"; color: green; }这个规则会为 以 https 开头且不包含 "example" 关键字 的链接,在其后面添加绿色的 "(安全)" 标识。 结语 希望这篇文章能帮助你更好地理解 CSS 选择器的强大之处。如果你有什么喜欢的 CSS 选择器,欢迎在评论区分享!
-
【尚硅谷】鸿蒙应用开发 - 带源码课件 课程描述 本教程精心设计了一款精致而小巧的实战应用,贯穿整个学习过程,真正做到理论与实践相结合。课程内容从基础到高级,层层递进,全面覆盖鸿蒙应用开发的所有必备技能。通过图解抽象知识、丰富的案例和清晰的讲解,帮助学习者快速掌握鸿蒙应用开发的核心技术。 课程亮点 实战驱动:以实际应用案例为主线,贯穿整个学习过程,让学习更贴近实际开发需求。 内容全面:从基础概念到高级技能,系统化讲解鸿蒙应用开发的方方面面。 图解教学:通过图解方式解析抽象概念,降低学习难度,提升理解效率。 源码提供:附带完整源码课件,方便学习者随时查阅和实践。 课程价格 原价:199 元 免费提供:本资源为免费分享,无需付费即可获取。 资源链接 👉 点击这里获取课程资源 适合人群 对鸿蒙应用开发感兴趣的初学者 希望提升鸿蒙开发技能的中高级开发者 需要系统化学习鸿蒙开发的技术爱好者 学习建议 按照课程顺序逐步学习,打好基础后再深入高级内容。 结合源码课件进行实践,边学边练,巩固知识。 遇到问题时,可以参考图解和案例,快速解决问题。 代码示例 // 示例代码:鸿蒙应用开发中的简单页面跳转 public void onStart(Intent intent) { super.onStart(intent); super.setUIContent(ResourceTable.Layout_ability_main); Button button = (Button) findComponentById(ResourceTable.Id_button); button.setClickedListener(component -> { present(new SecondAbilitySlice(), new Intent()); }); }
-
华为工程师带你实战C++:专业深度全面完整 本课程以实战为主,课上全部代码均为边讲边手敲,学完此套课程,可以达到一个 C++中高级开发者的水平。既适合于刚刚入门有一定的语言基础的人,也适合于有一定的开发经验的人。 864e1741579438.jpg图片 课程大纲 第 1 章:C++基础与提高 1-1 C++学习开山篇 1-2 C 到 C++类型安全增强 1-3 Cout 格式输出,函数重载初步 1-4 函数重载原理 1-5 C++运算符重载初步 1-6 C++函数默认参数 1-7 C++引用与提高 第 2 章:C++核心特性 2-1 Day1 回顾 2-2 Day1 回顾 2 2-3 C++中内存管理(NewDelete) 2-4 C++中内存管理 2(NewDelete) 2-5 C++内联函数(inline) 2-6 C++中强制类型转换 Cast 2-7 const 类型的补充 2-8 C++命名空间 2-9 C++命名空间 2 2-10 C++字符串类型 string 第 3 章:C++面向对象编程 3-1 Day2 回顾 3-2 Day2 作业解答 homework 3-3 C++封装特性一 3-4 C++封装特性二 3-5 C++封装特性三 3-6 C++类的构造器 Constructor 3-7 C++类的析构器 Destructor 3-8 构造析构练习(基于系统 string 类构造自己的 String 类) 第 4 章:C++高级特性 4-1 Day3 回顾 4-2 作业(C++链表封装) 4-3 自实现 String 类拷贝构造器 4-4 自实现 String 类赋值运算符重载 4-5 C++返回对象或引用的区别 4-6 String 类自我实现完结篇 4-7 用面向对象的思想实现闹钟 4-8 对象数组 4-9 类成员函数的存储 第 5 章:C++进阶 5-1 Day4 回顾 5-2 C++中 const 关键字修饰类 5-3 C++中 static 关键字修饰类 5-4 C++中 static 关键字修饰类 5-5 指向类成员(数据函数)的指针 5-6 指向类成员的指针练习 5-7 C++友元认识 5-8 实践友元 5-9 C++运算符重载初步 第 6 章:C++高级编程 6-1 Day5 回顾 6-2 单双目运算符重载 6-3 流输入输出运算符重载 6-4 运算符重载实践 6-5 类型转化 Cast 6-6 运算符重载提高篇 6-7 运算符重载提高篇 2 第 7 章:C++继承与多态 7-1 Day6 回顾 7-2 继承的意义,派生类构造 7-3 派生类的构造器 7-4 派生类的赋值重载 7-5 派生类的友元函数 7-6 派生类的析构器 7-7 C++继承一 7-8 C++继承二 7-9 C++多继承 第 8 章:C++多态与设计模式 8-1 Day7 回顾 8-2 C++多继承续 8-3 多态前提赋值兼容 8-4 多态与虚函数 8-5 多态与纯虚函数 8-6 基于多态的设计模式依赖倒置原则 8-7 基于多态的 cocos 游戏入口分析 8-8 基于多态的 cocos 游戏入口分析自实现 第 9 章:C++项目实战 9-1 Day8 回顾 9-2 基于多态的管理系统项目设计 1 9-3 基于多态的管理系统项目实现 2 9-4 多态实现原理深度剖析 9-5 基于多态的管理系统项目设计多态常见问题解答 9-6 运行时类型信息 RTTI(typeid)应用 9-7 运行时类型信息 RTTI(dynamic_cast)应用 9-8 C++模板 第 10 章:C++流与文件操作 10-1 Day9 回顾 10-2 C++流类综述 10-5 C++二进制文件读写 课程资料 Cplusplus 基础与提高.pdf:课程配套教材。 下载链接 百度网盘:隐藏内容,请前往内页查看详情 夸克网盘:隐藏内容,请前往内页查看详情 了解更多技术内容,请访问:6v6 博客
-
TLS 和 SSL 的区别 TLS 和 SSL 的区别 TLS(Transport Layer Security)和 SSL(Secure Sockets Layer)都是用于保护网络通信安全的协议,通常用于加密 Web 流量(如 HTTPS)。TLS 是 SSL 的继任者,目前是标准协议,而 SSL 已经过时。主要区别如下: 图片 1. 起源和历史 SSL(Secure Sockets Layer): 由 Netscape 在 1990 年代初期设计,经历了 SSL 1.0、2.0、3.0 版本 SSL 3.0 存在 POODLE 漏洞,已逐渐被淘汰 TLS(Transport Layer Security): 1999 年发布 TLS 1.0(基于 SSL 3.0),后续版本包括 TLS 1.1、1.2、1.3 TLS 1.3 是最新版本(2018 年发布) 2. 安全性 SSL: 存在已知漏洞(如 POODLE),SSL 3.0 已被视为不安全 TLS: 提供更强加密算法(如 AES、SHA-256),TLS 1.3 简化握手过程并减少攻击面 3. 协议版本 SSL 版本: SSL 1.0(未发布)、SSL 2.0(1995)、SSL 3.0(1996) TLS 版本: TLS 1.0(1999)、TLS 1.1、TLS 1.2(最常用)、TLS 1.3(2018) 4. 握手过程和性能 SSL: 复杂握手过程导致较高延迟 TLS: TLS 1.3 显著减少握手往返次数,提升性能 5. 兼容性 现代浏览器和服务器已不再支持 SSL TLS 1.2/1.3 是当前主流协议 6. 加密算法 SSL:支持 RC4 等不安全算法 TLS:支持更安全的 AES-GCM、ChaCha20 等算法 7. 实际应用 SSL:已完全淘汰 TLS:广泛用于 HTTPS、邮件加密、VPN 等场景 总结对比表 特性SSLTLS全称Secure Sockets LayerTransport Layer Security起源Netscape 1990sSSL 的继任者(1999)推荐版本无TLS 1.2/1.3安全性存在已知漏洞更强加密算法握手性能较慢更快(TLS 1.3 优化握手)当前使用情况已淘汰广泛使用
-
删除 node_modules 目录太慢了?教你快速删除 前言 大家好,我是易航,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~ 在开发过程中,node_modules 文件夹常常会因为存放了大量的依赖包而变得庞大,尤其是在大型项目中。虽然 node_modules 是 Node.js 项目中不可或缺的一部分,但在一些特定的情况下,比如清理无用依赖或是重新安装依赖时,删除 node_modules 文件夹是一个常见的操作。然而,手动删除这么大的文件夹往往是一个耗时且效率低下的过程。对于开发者而言,如何快速有效地删除 node_modules 成为了一个常见的痛点。 这时,rimraf 工具就显得尤为重要,它可以替代rm -rf命令来递归删除文件夹,并且相较于手动删除,它提供了更高效的方式。 一、什么是 rimraf? rimraf 是一个 Node.js 库,用于递归地删除文件和目录,特别适用于删除 node_modules 这样的庞大文件夹。rimraf 在删除文件和文件夹时,采用了优化过的实现,特别能够提高大文件夹删除的效率。 与操作系统自带的 rm -rf 命令相比,rimraf 通过减少系统调用、避免进程挂起等方式,能够加快删除过程,尤其在 Windows 平台上表现尤为突出,因为 Windows 本身对于删除大量文件的支持不如类 Unix 系统。 二、为什么手动删除 node_modules 这么慢? 在大型 Node.js 项目中,node_modules 文件夹可能包含上万个文件和子文件夹。由于 node_modules 文件夹结构的复杂性和深度,手动删除该文件夹需要操作系统一次性处理大量的文件删除操作。在这种情况下,操作系统的文件系统(如 macOS 的 HFS+ 或 Windows 的 NTFS)可能会出现延迟,导致删除过程非常缓慢。 图片 1. 操作系统的文件系统限制 操作系统的文件系统并没有针对大规模删除优化。例如,当你使用文件资源管理器删除文件时,它实际上是逐一标记每个文件为删除状态,并且还会消耗大量的资源来更新文件索引。这对于 node_modules 这种成千上万个文件的文件夹来说,执行起来非常低效。 2. 文件系统缓存和索引 文件操作系统通常会保持一定的缓存和索引记录,以便加速文件的读写和删除过程。然而,当需要删除大量文件时,这些缓存和索引会成为瓶颈,导致删除变得缓慢。 三、如何使用 rimraf 加速删除过程? rimraf 是一个专为递归删除大文件夹设计的工具,它通过优化删除过程中的一些细节,避免了文件系统缓存和索引的限制,使得删除过程更加高效。使用 rimraf 删除 node_modules 的步骤非常简单,以下是详细的操作流程。 1. 安装 rimraf 首先,我们需要在项目中安装 rimraf。可以通过 npm 或 yarn 来安装它。打开你的命令行,进入到你的项目目录下,执行以下命令: npm install rimraf --save-dev或者使用 yarn: yarn add rimraf --dev2. 在命令行中使用 rimraf 安装完成后,你可以在命令行中直接使用 rimraf 来删除 node_modules 文件夹。以下是使用 rimraf 删除 node_modules 的命令: npx rimraf node_modules3. 在 package.json 中配置脚本 为了简化操作,可以将删除命令添加到 package.json 中的 scripts 部分: { "scripts": { "clean": "rimraf node_modules" } }然后运行: npm run clean4. 使用 rimraf 加速其他删除操作 除了删除 node_modules,rimraf 还可以删除其他大文件夹: npx rimraf build四、rimraf 的优势 跨平台兼容:支持 Linux、macOS 和 Windows。 高效删除:针对大规模文件删除优化,速度显著提升。 易于使用:通过命令行或脚本配置即可快速操作。 与包管理工具集成:无缝配合 npm、yarn 使用。 五、总结 rimraf 是一个轻量级、高效且跨平台的工具,特别适合快速删除 node_modules 等大型文件夹。通过优化删除流程,它能显著提升开发效率,尤其是在 Windows 系统上表现突出。如果你还在手动删除 node_modules,不妨尝试使用 rimraf 来简化工作流程。 结语 我是易航,待过多种类型公司的前端开发者,始终坚持用通俗易懂的方式分享技术知识。欢迎关注我的博客「易航博客」获取更多前端干货!