<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[emmmmmmm__的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/emmmmmmm__</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; emmmmmmm__]]></copyright><item><title><![CDATA[记录几个前端实用小函数]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/162490537</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/162490537</guid><author>emmmmmmm__</author><pubDate>Wed, 01 Jul 2026 16:44:59 +0800</pubDate><description><![CDATA[本文介绍了前端工具函数库的搭建方法，提供了10个常用工具函数的实现方案： 防抖函数（debounce）- 控制高频触发事件 日期格式化（formatDate）- 支持多种日期格式转换 安全JSON解析（safeJsonParse）- 防止解析错误导致程序崩溃 空对象判断（isEmpty）- 检测对象是否为空 剪贴板操作（copyToClipboard）- 现代API和降级方案兼容 异步工具（sleep/retry）- 延时执行和失败重试机制 数组工具（uniqueArray等）- 去重、分块、排序等操作 文]]></description><category></category></item><item><title><![CDATA[西藏地图飞线html]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/153397619</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/153397619</guid><author>emmmmmmm__</author><pubDate>Thu, 16 Oct 2025 11:14:33 +0800</pubDate><description><![CDATA[使用ECharts 5.4.3版本绘制青海省地图 实现三个城市点位之间的飞线效果 地图采用深色背景+蓝色边框的科技感风格 包含动态飞线动画和城市标记点效果 提供了完整的青海省地图JSON数据 使用方法： 直接复制代码到HTML文件中运行 建议将ECharts库下载到本地引用（注释中给出了示例） 注意事项： 包含错误处理和日志功能 响应式设计适配不同屏幕尺寸 需要联网加载ECharts库（或者按建议本地化）]]></description><category></category></item><item><title><![CDATA[前端localForage存储数据]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/148765337</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/148765337</guid><author>emmmmmmm__</author><pubDate>Thu, 19 Jun 2025 14:51:51 +0800</pubDate><description><![CDATA[localForage是一个跨浏览器、异步操作的JavaScript本地存储库，支持IndexedDB、WebSQL和localStorage等多种后端。相比localStorage，它具有更大容量、更好性能和兼容性，还能存储复杂数据类型。文章介绍了localForage的特性，并演示了如何在实际项目中封装使用：通过创建DataStore类实现统一管理，支持初始化、读写、清空等操作，特别展示了在Vue2项目中的集成方法和具体使用场景，如用户信息存储和退出登录时的数据清理。这种解决方案克服了传统本地存储]]></description><category></category></item><item><title><![CDATA[css模拟雷达扫描动画]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/146262422</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/146262422</guid><author>emmmmmmm__</author><pubDate>Fri, 14 Mar 2025 17:38:22 +0800</pubDate><description><![CDATA[【代码】css模拟雷达扫描动画。]]></description><category></category></item><item><title><![CDATA[vue2+element 前端表格下载]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/144691885</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/144691885</guid><author>emmmmmmm__</author><pubDate>Tue, 24 Dec 2024 13:07:13 +0800</pubDate><description><![CDATA[前台下载table表格 可下载fixed columns和普通平铺的表格]]></description><category></category></item><item><title><![CDATA[记录共通的js方法]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/141933613</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/141933613</guid><author>emmmmmmm__</author><pubDate>Thu, 05 Sep 2024 16:11:07 +0800</pubDate><description><![CDATA[【代码】记录共通的js方法。]]></description><category></category></item><item><title><![CDATA[VSCode中snippets（代码模板）的使用]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/139240567</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/139240567</guid><author>emmmmmmm__</author><pubDate>Mon, 27 May 2024 16:14:44 +0800</pubDate><description><![CDATA["prefix": "vbase" 就是代码块的关键词,输入vbase就会提示代码块 选择vbase2。然后保存，重启VSCode,新建文件测试，输入vb即可，选择刚才输入的vb2即可。首先安装Vue VSCode Snippets，在组件库中搜索并安装。文件夹名是 "作者名.vscode-插件名-版本号"组成的.打开vue.json。]]></description><category></category></item><item><title><![CDATA[VSCode setting.js配置]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/139236615</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/139236615</guid><author>emmmmmmm__</author><pubDate>Mon, 27 May 2024 14:12:51 +0800</pubDate><description><![CDATA[【代码】VSCode setting.js配置。]]></description><category></category></item><item><title><![CDATA[el-progress渐变色]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/136811165</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/136811165</guid><author>emmmmmmm__</author><pubDate>Mon, 18 Mar 2024 15:41:29 +0800</pubDate><description><![CDATA[在需要的地方引入组件，一般是el-progress的下方。然后再css里写样式选择需要的渐变色,到这里就完成了。线性渐变：直接修改样式根据所需颜色修改即可。]]></description><category></category></item><item><title><![CDATA[css 文字闪烁]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/135384685</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/135384685</guid><author>emmmmmmm__</author><pubDate>Thu, 04 Jan 2024 13:36:33 +0800</pubDate><description><![CDATA[【代码】css 文字闪烁。]]></description><category></category></item><item><title><![CDATA[setTimeout 和 setInterval 的定时时间]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/134665483</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/134665483</guid><author>emmmmmmm__</author><pubDate>Tue, 28 Nov 2023 13:53:29 +0800</pubDate><description><![CDATA[只是在特定时间点将代码推入队列，如果已有定时器在队列中，则会跳过。浏览器不会同时创建两个相同的间隔计时器。设置定时时间小于函数体内的执行时间时候，则第一次执行定时时间后面的真正的定时时间应该是执行函数体的总时间。中的异步代码不会阻塞创建新的定时器。]]></description><category></category></item><item><title><![CDATA[vue中下载文件后无法打开的坑]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/134599612</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/134599612</guid><author>emmmmmmm__</author><pubDate>Fri, 24 Nov 2023 15:27:17 +0800</pubDate><description><![CDATA[到这里请求文件流和导出文件得方法都已经写完了，这里面有的坑呢 打开就是返回得数据，大概就是你new Blob([data])得时候这个data是否是文件流，这个例子后端直接给我返回了文件流所以就直接使用了 一边都是res.data这样使用，再有就是responseType: 'blob',这个在请求文件流时请求头中必须要写，其他就没什么了。今天在项目开发的时候临时要添加个导出功能我就写了一份请求加导出得代码，如果到这里下载下来的文件还是无法打开请往下看。下面就要说的就是mockjs了。]]></description><category></category></item><item><title><![CDATA[JavaScript:监听事件]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/134578620</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/134578620</guid><author>emmmmmmm__</author><pubDate>Thu, 23 Nov 2023 15:48:08 +0800</pubDate><description><![CDATA[该方法用于向浏览器窗口注册事件监听器，当指定的事件（如单击、按键按下）被触发时，浏览器会自动调用指定的函数（回调函数）。]]></description><category></category></item><item><title><![CDATA[element table中嵌套el-select 无法选择问题]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/133948353</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/133948353</guid><author>emmmmmmm__</author><pubDate>Fri, 20 Oct 2023 16:08:23 +0800</pubDate><description><![CDATA[需要在el-table-column上添加:key="tableKey"el-select添加change事件修改tableKey。]]></description><category></category></item><item><title><![CDATA[element table合并行或列 span-method]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/133071589</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/133071589</guid><author>emmmmmmm__</author><pubDate>Wed, 20 Sep 2023 13:15:20 +0800</pubDate><description><![CDATA[再请求到后台数据之后如果数据不是按你想合并字段排序的话，这时候需要多做一步排序，把需要合并的那个字段分组显示，这里就不过多赘述了（这个分组一般后台都能做）。之后再调用接口获取到数据之后运行获取merge和subscript的方法。到这就已经把数据处理完了接下来就是处理el-table的合并方法。显然这种固定写法并不能满足我们日常开发中的需求。首先再data里定义两个变量。首先来看下官网上如何写的。接下来就讲一下如何操作。]]></description><category></category></item><item><title><![CDATA[vue element-ui el-table里嵌套了el-select双向绑定失效问题]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/132687185</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/132687185</guid><author>emmmmmmm__</author><pubDate>Tue, 05 Sep 2023 10:55:59 +0800</pubDate><description><![CDATA[今天测试时候发现了个bug element-ui的table组件中嵌套了select组件 ，选择之后发现数组中有数据，页面没有刷新数据无法展示，所以判断双向绑定失效。网上很多方法都试过了，像this.$set,this.$forceUpdate(),以及table的doLayout() 结果都没有解决问题。查了很多资料发现需要在el-table-column加一个key才能解决，于是加了key，就能双向绑定了，但是其中的原理不太了解，资料只给了解决方法没给问题原理求解。]]></description><category></category></item><item><title><![CDATA[elementui Cascader 踩过的坑]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/132554632</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/132554632</guid><author>emmmmmmm__</author><pubDate>Tue, 29 Aug 2023 09:51:08 +0800</pubDate><description><![CDATA[观察数据发现最后一级也有children只不过children=[],这就导致组件无法确定最后一级，所以无法触发change事件，所以把最后一级children=[]的属性删除掉应该就可以，后端统一方法无法处理该数据，所以就智能前端自己出来请求到的数据。分析问题：需求明明很简单，组件可以满足需求，直接拿过来用，却一直无法触发绑定的change事件，只有添加props.checkStrictly = true时才可以触发，但是不能实现需求。使用递归遍历请求到的数组，检查每个元素是否有子元素。]]></description><category></category></item><item><title><![CDATA[前端下载文件流和url下载文件]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/131595048</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/131595048</guid><author>emmmmmmm__</author><pubDate>Fri, 07 Jul 2023 13:46:31 +0800</pubDate><description><![CDATA[【代码】前端下载文件流文件。]]></description><category></category></item><item><title><![CDATA[rimraf 删除依赖 以及安装依赖报错清理缓存]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/131290398</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/131290398</guid><author>emmmmmmm__</author><pubDate>Mon, 19 Jun 2023 16:26:55 +0800</pubDate><description><![CDATA[由于项目太大 所导致的依赖也很大 所以再要手动删除依赖的时候会非常的慢 所以就用到了rimraf来进行删除操作 会节省很多时间 同理删除其他大文件也可以使用。]]></description><category></category></item><item><title><![CDATA[js 数据平铺和树形结构互相转换]]></title><link>https://blog.youkuaiyun.com/emmmmmmm__/article/details/130678545</link><guid>https://blog.youkuaiyun.com/emmmmmmm__/article/details/130678545</guid><author>emmmmmmm__</author><pubDate>Mon, 15 May 2023 10:10:30 +0800</pubDate><description><![CDATA[tree转data 的时候不会删除children 由树形结构转成data再转成Tree的话 需要再转成data的时候循环把children删掉。]]></description><category></category></item></channel></rss>