<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[清颖的博客]]></title><description><![CDATA[前端程序媛一枚，总结开发知识，分享交流。]]></description><link>https://blog.youkuaiyun.com/aaqingying</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; aaqingying]]></copyright><item><title><![CDATA[大学生前端必知：箭头函数与普通函数的区别，数组与链表的区别是什么？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/150382462</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/150382462</guid><author>aaqingying</author><pubDate>Thu, 14 Aug 2025 10:10:08 +0800</pubDate><description><![CDATA[箭头函数与普通函数的关键区别在于this绑定、缺少prototype属性、无法使用arguments对象等特性，使其更适合简单回调场景。数组与链表在存储方式、访问效率、增删操作等方面存在显著差异，数组适合随机访问，而链表更擅长动态操作。这些技术点都是1-3年前端开发者需要掌握的高频面试内容。]]></description><category></category></item><item><title><![CDATA[前端必知：JavaScript中如何让forEach退出循环？let、var、const的区别？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/150382091</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/150382091</guid><author>aaqingying</author><pubDate>Thu, 14 Aug 2025 09:52:08 +0800</pubDate><description><![CDATA[摘要：本文介绍了让forEach循环退出的两种方法：1）使用return语句提前退出当前循环；2）通过抛出异常来终止整个循环。同时比较了let、var、const的区别，包括作用域、变量提升、重复声明和赋值限制等特性。建议初学者优先使用return语句控制循环，避免滥用异常处理，并合理选择变量声明方式。（148字）]]></description><category></category></item><item><title><![CDATA[原生微信小程序研发，如何对图片进行统一管理？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/149245257</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/149245257</guid><author>aaqingying</author><pubDate>Thu, 10 Jul 2025 15:35:26 +0800</pubDate><description><![CDATA[在小程序中统一管理图片资源：通过在配置文件中集中存储图片链接（建议使用CDN），利用变量和函数动态生成路径，并通过全局变量或工具函数在不同页面调用。该方法避免业务代码直接引用图片路径，便于维护和修改，同时遵循小程序包体积限制（不超过2M），建议仅存放必要的小图标。实现方式包括：1）创建独立配置文件；2）在app.js设置全局变量；3）页面通过getApp或工具函数引用。动态图片还可通过函数参数化路径。]]></description><category></category></item><item><title><![CDATA[Nuxt项目中如何对图片、图标进行统一管理？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/149174981</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/149174981</guid><author>aaqingying</author><pubDate>Thu, 10 Jul 2025 10:37:57 +0800</pubDate><description><![CDATA[本文介绍了使用JS/JSON配置文件管理图片链接的方案。建议在assets/config目录创建images.js等配置文件集中管理图片URL，通过组件导入或全局注入方式使用。全局注入可通过Vue插件实现，在nuxt.config.js注册后即可在所有组件通过this.$images访问。对于大量图片，可按类型拆分多个文件后合并导出。该方案便于统一管理图片资源，修改URL时只需调整配置文件，不影响业务代码。]]></description><category></category></item><item><title><![CDATA[DeepSeek，本地部署➕图形化界面搞定！详细步骤]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/145601363</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/145601363</guid><author>aaqingying</author><pubDate>Thu, 13 Feb 2025 08:00:00 +0800</pubDate><description><![CDATA[这篇文章提供了关于如何在本地部署DeepSeek的详细指南，并强调了通过图形化界面简化操作的优势。文中详细介绍了从安装到配置的具体步骤，帮助读者轻松完成本地部署。]]></description><category></category></item><item><title><![CDATA[Github配置ssh key，密钥配对错误怎么解决？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/145126929</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/145126929</guid><author>aaqingying</author><pubDate>Tue, 14 Jan 2025 00:15:17 +0800</pubDate><description><![CDATA[最有效的方案：重新配置，验证 SSH 密钥是否已添加到 GitHub，确保您的 SSH 密钥已经正确添加到了 GitHub 账户中。您可以按照以下步骤操作：
生成新的 SSH 密钥对（如果尚未创建）：ssh-keygen -t ed25519 -C "your_email@example.com"
按照提示操作，建议不要设置密码短语以简化自动化流程。
将公钥添加到 GitHub：
复制生成的公钥内容：cat "$env:USERPROFILE\.ssh\id_ed25519.pub"]]></description><category></category></item><item><title><![CDATA[asycn…await的底层原理，终于有人说清楚了]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/144982554</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/144982554</guid><author>aaqingying</author><pubDate>Tue, 07 Jan 2025 12:09:47 +0800</pubDate><description><![CDATA[async函数总是返回一个Promise。await会暂停async函数的执行，直到Promise被解析或拒绝，且它不会阻塞主线程。async和await的底层是基于Promise和微任务队列的，它们为异步编程提供了一种更加直观和易于理解的语法糖。]]></description><category></category></item><item><title><![CDATA[前端研发高德地图，如何根据经纬度获取地点名称和两点之间的距离？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/143925044</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/143925044</guid><author>aaqingying</author><pubDate>Wed, 20 Nov 2024 20:54:25 +0800</pubDate><description><![CDATA[用js研发高德地图，做web应用，如何用逆地理编码解决根据经纬度获取地点名称？计算两点之间的距离？使用于前端研发，pc端或h5页面。]]></description><category></category></item><item><title><![CDATA[Antd的Form表单设置validator自定义校验后，required必填校验就不生效？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/141259162</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/141259162</guid><author>aaqingying</author><pubDate>Fri, 16 Aug 2024 14:32:16 +0800</pubDate><description><![CDATA[做运营系统、后台系统、ToB项目时避免不了需要研发表单，要填写各种内容。
操作：给`Form.Item`的属性`rules`，给`rules`里面指定了 *{ required: true }*, 同时给了 `validator`
自定义校验方法。
问题描述：自定义校验后，required 必填不起效。解决……]]></description><category></category></item><item><title><![CDATA[前端面试：JavaScript中new关键字的原理你知道吗？手写new的实现]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/137227532</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/137227532</guid><author>aaqingying</author><pubDate>Mon, 01 Apr 2024 12:05:23 +0800</pubDate><description><![CDATA[在JavaScript中，new关键字用于 创建一个新对象并将其实例化为指定的构造函数类型。时，它创建了一个新对象，并将该对象的原型链指向 proto。]]></description><category></category></item><item><title><![CDATA[前端缓存的具体区别你清楚吗？详细分析]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/137026053</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/137026053</guid><author>aaqingying</author><pubDate>Mon, 25 Mar 2024 21:15:46 +0800</pubDate><description><![CDATA[Cookie、sessionStorage和localStorage都是Web存储机制，用于在用户的浏览器中存储数据。本文详细说明一下他们的作用，以及不同点。]]></description><category></category></item><item><title><![CDATA[instanceof的原理是什么？手写instanceof方法]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/137010163</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/137010163</guid><author>aaqingying</author><pubDate>Mon, 25 Mar 2024 17:54:00 +0800</pubDate><description><![CDATA[instanceof 运算符 是 JavaScript 中用于检测 一个对象 是否是其构造函数的 prototype 属性指向的原型链上的实例。输入一个对象，一个构造函数；通过循环遍历对象的原型链，逐级检查是否与给定构造函数的原型相匹配，从而判断对象是否是由特定构造函数创建的。Object.getPrototypeOf(xx),用于获取指定对象的原型（即原型链的上一层对象），相当于xx.（简单记：用于检查一个对象是否是指定构造函数的 prototype 原型链上的实例。]]></description><category></category></item><item><title><![CDATA[http协议中的强缓存与协商缓存，带图详解]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/136633796</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/136633796</guid><author>aaqingying</author><pubDate>Mon, 11 Mar 2024 20:13:30 +0800</pubDate><description><![CDATA[http中的缓存分为两种：强缓存、协商缓存。响应头中的 status 是 200，相关字段有，两者同时出现时 cache-control 优先级更高。主要是利用的max-age值来进行判断。浏览器再次请求服务器时，浏览器会先判断max-age，如果到期则直接请求服务器，否则直接从缓存中读取。响应头中的 status 是 304，相关字段有。（1） 服务器的 ETag 和 浏览器的 If-None-Match 对应。]]></description><category></category></item><item><title><![CDATA[CSS实践调研与格式参考，行业流行的代码风格]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/136055343</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/136055343</guid><author>aaqingying</author><pubDate>Tue, 06 Feb 2024 13:24:06 +0800</pubDate><description><![CDATA[继上一篇博客，补充一些行业内的CSS书写案例。]]></description><category></category></item><item><title><![CDATA[前端开发中需要注意的CSS命名规则以及书写顺序]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/135547164</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/135547164</guid><author>aaqingying</author><pubDate>Fri, 12 Jan 2024 11:06:42 +0800</pubDate><description><![CDATA[CSS命名一般是用 BEM 规则命名的。它背后的想法是将用户界面划分为独立的块。
`BEM`的意思就是`B模块(block)`、`E元素(element)`、`M修饰符(modifier)`，
即：`[block]__[element]--[modifier]`。关于CSS属性的书写顺序建议：
一般来说，要先定义好布局，即先写位置、再写大小边距，再写文字样式、背景色，最后写其他属性。]]></description><category></category></item><item><title><![CDATA[解决移动端小程序事件穿透的问题]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/131985053</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/131985053</guid><author>aaqingying</author><pubDate>Fri, 15 Dec 2023 18:50:14 +0800</pubDate><description><![CDATA[在地图上面写多个小图标，图标位于地图两侧并且都可以点击。要求点击图标时不触发地图的点击事件。如果使用Taro的Map组件开发地图，什么都不处理的情况下，点击小图标时，地图也会被触发点击事件。这不是我们的预期结果。解决方法：pointer-events: visible;]]></description><category></category></item><item><title><![CDATA[Vue中this.$nextTick的执行时机]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/135017953</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/135017953</guid><author>aaqingying</author><pubDate>Fri, 15 Dec 2023 15:23:41 +0800</pubDate><description><![CDATA[Vue中this.$nextTick的执行时机，整体可分为两种情况：
第一种：下一次 Dom 更新之后执行（即等待DOM更新结束之后，执行nextTick的延迟回调函数）；
第二种：页面挂载后 （mounted）执行。

二、使用场景与举例：
对应第一种：
a. 修改数据后需要等待Vue.js完成视图更新后，再执行特定的逻辑。
b. 在事件触发修改数据的时候，]]></description><category></category></item><item><title><![CDATA[git代码仓库必知：忽略文件规则。问题解决: git检测不到文件，gitignore没有忽略，但是commit不了]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/132294895</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/132294895</guid><author>aaqingying</author><pubDate>Fri, 01 Sep 2023 15:25:59 +0800</pubDate><description><![CDATA[在 Git 中，有两种类型的忽略文件：项目级别的 .gitignore 和全局级别的 .gitignore_global。第一种： 项目级别的 .gitignore：位于项目的根目录下，这个文件仅影响当前项目，不会影响其他项目或全局设置。第二种： 全局级别的 .gitignore_global：
位于你用户主目录下，文件名是 .gitignore_global。]]></description><category></category></item><item><title><![CDATA[一行代码解决Taro中VirtualList虚拟列表渲染抖动的问题]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/131792712</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/131792712</guid><author>aaqingying</author><pubDate>Wed, 19 Jul 2023 12:03:31 +0800</pubDate><description><![CDATA[问题背景：使用Taro 提供的组件库 VirtualList 时，数据源长度改变后，发生渲染抖动。读完本篇文章，你可以获得：
虚拟列表概念
虚拟列表的使用场景
性能优化策略-key
虚拟列表渲染抖动的问题解决
表格抖动或渲染错误的解决方向]]></description><category></category></item><item><title><![CDATA[JS/React如何控制列表中某项的展开与收起状态，而不影响其他元素？]]></title><link>https://blog.youkuaiyun.com/aaqingying/article/details/131233033</link><guid>https://blog.youkuaiyun.com/aaqingying/article/details/131233033</guid><author>aaqingying</author><pubDate>Fri, 16 Jun 2023 10:20:45 +0800</pubDate><description><![CDATA[有一个列表，是循环遍历出来的，我们要做的是：点击某个子项时，只有该子项的展开或收起状态会受到影响，而其他子项的状态不会改变。（同情景的，做小图标高亮时也可以用到，达到只有该项图标高亮的效果）如上，在点击事件中传入Id（或其他代表唯一的属性），改变当前项的数据并返回，而其他项原样返回。可以使用组件的状态来追踪每个子项的展开或收起状态，通过。无论用的什么前端框架都可以使用该思路，属于JS思想。这样的属性去判断，然后返回子项数据。]]></description><category></category></item></channel></rss>