
前端
文章平均质量分 97
各种前端问题的技巧和解决方案,主要包括但不限于:
1、由于版本更迭,已经落后并且有bug的源码修改方式
2、特殊的、少见的需求,不包括网上常见的教程和入门的web设计,也不包括常见的文档里就有的内容
3、优质的web布局和样式设计分享
做一名优质的前端工程师
watermelo37
合作请+v:Watermelo617,备注说明来意。一个假装是giser的coder,做不只专注于业务逻辑的前端工程师,java、docker、数据库、python、LLM均有涉猎。提问最好私信,评论容易漏掉,欢迎互关,欢迎讨论,一起进步!
展开
-
报错详解——Vue升级带来的elementui冲突警告: Invalid prop: custom validator check failed for prop “type“.
以下两种警告一次性解决,包括解决方案,产生原因和深度思考:Invalid prop: custom validator check failed for prop "type". Invalid prop: validation failed for prop "type". Expected one of ["success", "info", "warning", "danger", ""], got value "primary".原创 2025-04-02 15:40:42 · 1417 阅读 · 48 评论 -
前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略
瀑布流+无限滚动+懒加载的结合能够提升用户体验和页面性能:瀑布流以错落有致的布局呈现内容,增加视觉吸引力;无限滚动让用户无需翻页即可持续浏览,提高交互流畅性;懒加载则延迟加载非可视区域的内容,减少初始加载时间与资源消耗,从而实现高效、动态且美观的内容展示。原创 2025-03-24 13:32:40 · 5890 阅读 · 163 评论 -
Lottie与LottieFiles:快速为前端Web开发注入精美动画的利器
在追求极致用户体验的今天,Lottie和LottieFiles为前端工程师提供了从设计到实现的完整解决方案。正如LottieFiles CTO在最新访谈中所说:“我们的目标是让动画开发像使用CSS一样简单”(2025年1月技术峰会演讲)。现在正是将Lottie技术栈纳入前端技能树的最佳时机。原创 2025-03-10 14:05:28 · 2823 阅读 · 115 评论 -
剖析跨域问题始末及其解决方案——前端必备交叉知识(一)
跨域问题是前端开发中的常见挑战,了解并掌握不同的跨域解决方案能帮助你更高效地进行开发工作。本文对同源策略、跨域以及解决跨域的三种方案: CORS、JSONP、代理等跨域技术进行了介绍。选择合适的跨域解决方案非常重要。原创 2025-02-10 21:46:22 · 4016 阅读 · 27 评论 -
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
柯里化是将一个接受多个参数的函数转换为一系列单参数函数的过程。换句话说,柯里化后的函数会逐步接收参数,每次只接收一个或部分参数,直到收集到足够的参数时才真正执行。柯里化的概念源于逻辑学家哈斯凯尔·柯里(Haskell Curry),他的研究为函数式编程奠定了理论基础。如今,柯里化已成为现代编程语言中的重要组成部分,尤其在函数式编程语言(如 Haskell、Scala)和 JavaScript 等动态语言中广泛应用。原创 2024-12-23 14:37:13 · 4528 阅读 · 145 评论 -
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
数组操作全集,从简单到高级,从理论到应用,从调用到底层逻辑。不全你来打我。这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。原创 2024-12-09 11:32:03 · 5495 阅读 · 204 评论 -
全网最全情景,深入浅出解析JavaScript数组去重:数值与引用类型的全面攻略
在日常开发中,数组去重是一个不可避免的话题。不管是简单的数值数组去重,还是复杂的引用类型数组去重,掌握多种方法可以帮助开发者高效、优雅地解决实际问题。在这篇博客中,我们将从基础到进阶,结合大量代码案例,系统介绍数组去重的各种技巧。原创 2024-12-02 10:01:05 · 3304 阅读 · 174 评论 -
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。原创 2024-11-25 14:29:56 · 16187 阅读 · 195 评论 -
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
Array.find 不仅能更简洁地找到符合条件的第一个元素,还具有一个重要的性能优势:它返回的元素是原数组中的引用。通过这个引用,我们可以直接修改原数组中的特定元素,使得代码更加简洁和高效。可以说,但凡需要修改数组数据中任何一个特定的元素,都可以使用Array.find()来实现,而且比任何其他方法都要更简单便捷。原创 2024-11-18 17:26:42 · 9980 阅读 · 187 评论 -
改变函数调用上下文:apply与call方法详解及实例
apply 和 call 是 JavaScript 中两个重要的函数方法,它们允许我们在调用函数时显式地设置 this,并传递参数。它们的区别在于参数传递方式:apply 使用数组,而 call 则是直接传递参数。在实际开发中,这两个方法经常用于显式绑定 this、借用方法、动态函数调用等场景。掌握它们可以提升代码的灵活性和可读性。原创 2024-10-21 22:51:33 · 3464 阅读 · 183 评论 -
深入理解拓展运算符与剩余运算符:功能、用法与区别
拓展运算符和剩余运算符为JavaScript提供了更灵活的数组和对象操作方法。在实际开发中,合理运用这两个运算符可以大大简化代码,提高代码的可读性和维护性。拓展运算符展开元素,而剩余运算符收集剩余元素——二者在功能上互补,是编写现代JavaScript代码的强大工具。原创 2024-10-14 14:31:14 · 3477 阅读 · 190 评论 -
地图可视化的艺术:深入比较Mapbox、OpenLayers、Leaflet和Cesium,不同场景下应如何选择地图库
选择合适的地图库取决于项目的需求、团队的技术栈以及预算等因素。简单来说,新手可以从leaflet入手;GIS开发使用openlayers会更顺手一些;mapbox适应大多数2D和2.5D场景,可视化效果好,但是不开源;cesium更侧重于3D场景。原创 2024-10-08 11:08:58 · 4537 阅读 · 200 评论 -
mapbox没有token/token失效,地图闪烁后变空白,报错Error: A valid Mapbox access token is required to use Mapbox GL JS.
mapbox的token失效或者没有token怎么办,mapbox去token验证,暴力破解mapbox的token验证机制。一劳永逸解决mapbox地图闪现一下然后变成空白,报错Error: A valid Mapbox access token is required to use Mapbox GL JS.的问题原创 2024-09-25 15:18:56 · 5122 阅读 · 180 评论 -
MutationObserver详解+案例——深入理解 JavaScript 中的 MutationObserver:原理与实战案例
JavaScript 提供了多种 API 来操作 DOM 结构。而在操作 DOM 时,我们经常需要监测 DOM 的变化,这时候,MutationObserver 就显得格外有用。在这篇博客中,我们将详细介绍 MutationObserver 的工作原理,并通过几个实战案例帮助你全面掌握如何在实际项目中使用 MutationObserver。原创 2024-09-16 16:19:02 · 8127 阅读 · 83 评论 -
JavaScript中闭包详解+举例,闭包的各种实践场景:高级技巧与实用指南
闭包是JavaScript中不可或缺的部分,它不仅可以增强代码的可维护性,还能在模块化、回调处理等场景中发挥巨大作用。然而,闭包的强大也意味着需要谨慎使用,避免潜在的性能问题和内存泄漏。通过对闭包原理的深入理解以及在实际项目中的灵活应用,你将能够更加高效地编写出简洁且功能强大的代码。原创 2024-08-26 10:49:39 · 6329 阅读 · 99 评论 -
ES6解构赋值详解;全面掌握:JavaScript解构赋值的终极指南
解构赋值是一个强大且灵活的工具,它使得从数组和对象中提取数据变得更加简单和直观。通过掌握解构赋值的基本语法和实践,你可以写出更加简洁、可读性更强的代码。在实际项目中,解构赋值广泛应用于函数参数处理、变量交换、嵌套结构操作等场景,极大地提升了代码的灵活性和简洁度。原创 2024-08-22 20:42:51 · 5443 阅读 · 75 评论 -
Array.forEach实战详解:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能
巧用Array.forEach:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能原创 2024-08-12 16:57:58 · 4223 阅读 · 70 评论 -
PDF在线预览实现:如何使用vue-pdf-embed实现前端PDF在线阅读
本文详细介绍了如何在Vue项目中使用vue-pdf-embed实现PDF文件的在线展示。从项目初始化、插件集成到高级功能的实现和部署优化,希望对你有所帮助。在实际项目中,灵活运用这些技术可以大大提升用户体验和项目质量。原创 2024-08-11 19:37:10 · 2625 阅读 · 28 评论 -
一站搞定原型链:深入理解JavaScript的继承机制
原型链是什么?JavaScript的继承机制如何实现?原型链是对象通过原型实现属性和方法继承的一种机制。每个对象都有一个 __proto__ 属性,指向它的原型对象。每个函数(包括构造函数)都有一个 prototype 属性,指向一个对象,这个对象的属性和方法可以被实例共享。构造函数创建对象时,新对象的 __proto__ 属性指向构造函数的 prototype 对象。继承可以通过设置原型对象实现,也可以使用 ES6 的 class 语法糖。原创 2024-08-11 19:35:56 · 2023 阅读 · 13 评论 -
直击Vue2/3watch的底层逻辑,字符串长度对侦听效率的影响
vue中watch的实现机制,数据长度的扩充对watch效率的影响。vue中如何实现对数据变化的侦听。字符串长度变化对侦听过程有哪些影响。原创 2024-08-08 10:58:59 · 2494 阅读 · 39 评论 -
PDF预览:利用vue3-pdf-app实现前端PDF在线展示
怎么在前端在线展示pdf?怎么实现pdf预览功能?在本文的介绍中,我们详细了解了如何在Vue3项目中使用vue3-pdf-app实现PDF文件的在线展示。从项目初始化、插件集成到高级功能的实现和部署优化,希望对你有所帮助。在实际项目中,灵活运用这些技术可以大大提升用户体验和项目质量。原创 2024-08-07 10:28:58 · 4892 阅读 · 40 评论 -
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传是什么?什么时候需要分片上传?分片上传如何实现?分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。原创 2024-08-01 16:53:41 · 2746 阅读 · 51 评论 -
极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图
如何在前端用js绘制流程图?VueFlow是一个优质的选择。VueFlow是什么?VueFlow怎么用?Vue Flow的特点就是,什么都可以要,什么都要自己写。相比于mermaid来说,Vue Flow接受的数据更复杂冗长,并且预定义的内容极少,连默认的布局都没有(节点通过position控制位置,很容易重叠)。但是Vue Flow提供的自定义API非常丰富并且强大。如果您想发挥自己天马行空的想象力,或者满足复杂的项目流程需求,Vue Flow一定能满足您的预期。原创 2024-07-29 17:57:48 · 25641 阅读 · 53 评论 -
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
mermaid是一款非常优秀的基于 JavaScript 的图表绘制工具,可渲染 Markdown 启发的文本定义以动态创建和修改图表。非常适合新手学习或者做一些弱交互且自定义要求不高的图表 除了流程图以外,mermaid还支持序列图、类图、状态图、实体关系图等图表可供探索。原创 2025-01-07 21:54:27 · 6872 阅读 · 57 评论 -
浏览器渲染揭秘:从加载到显示的全过程;浏览器工作原理与详细流程
浏览器如何工作?浏览器渲染流程是什么样的?了解浏览器工作原理与流程,能有效帮助前端开发与性能优化。用户访问页面的时候,浏览器网络线程进行网络通信获取HTML代码,然后进入渲染主线程的消息队列进行包装,得到渲染任务后按需交由渲染主线程进行渲染。原创 2024-07-23 11:23:13 · 3028 阅读 · 24 评论 -
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。原创 2024-07-05 21:23:59 · 2951 阅读 · 48 评论 -
属性描述符初探——Vue实现数据劫持的基础
属性描述符(Property Descriptor)在JavaScript中是一个特殊的对象,它定义了对象属性的行为和特性。属性描述符有很多内容可以挖掘,比如defineProperty与Proxy的区别,比如vue2与vue3实现数据劫持的方式有什么不同,实现效果有哪些差异等,这篇博文只是入门,以后有时间再深挖。原创 2024-07-05 14:35:11 · 2470 阅读 · 28 评论 -
最细最有条理解析:事件循环(消息循环)是什么?为什么JS需要异步
单线程是异步产生的原因,事件循环是异步的实现方式。程序的运行会产生进程,进程的执行者就是线程。渲染主线程从消息队列的调度结果中获取要执行的任务,并不断循环读取和进行,这个过程就是事件循环。为什么需要事件循环这个技术手段,线程与进程的联系与区别,详情请看正文原创 2024-07-01 21:26:57 · 2467 阅读 · 32 评论 -
什么是深拷贝;深拷贝和浅拷贝有什么区别;深拷贝和浅拷贝有哪些方法(详解)
浅拷贝适用于只复制对象的第一层属性,且这些属性不是引用类型。深拷贝适用于需要完全独立的副本,包括对象和数组的嵌套结构。选择哪种拷贝方式取决于你的具体需求和场景。此外,要注意赋值运算符连浅拷贝都算不上,是纯粹的引用,没有创建新的数组/对象。原创 2024-06-15 17:21:09 · 3926 阅读 · 17 评论 -
管理数据必备;侦听器watch用法详解,vue2与vue3中watch的变化与差异
一篇文章同时搞定Vue2和Vue3的侦听器,是不是很棒?不要忘了Vue3中多了一个可选项watchEffect噢原创 2024-06-10 22:30:33 · 3273 阅读 · 16 评论 -
路由通配符,小小的字符有大大的作用,你真的熟悉吗?
使用 :catchAll 可以创建非常灵活的路由规则,因为它可以匹配几乎任何形式的 URL。所以用来做404页面的路由匹配符非常好用。原创 2024-06-08 23:15:06 · 2508 阅读 · 4 评论 -
对象数据的读取,看这一篇就够了!Object.keys()、Object.values()和Object.entries()用法详解;如何获取对象原型链上的属性
Object.keys()、Object.values()和Object.entries()都是利于对象操作的便捷方法,能有效提升数据处理的效率。原创 2024-06-07 21:58:32 · 2937 阅读 · 3 评论 -
别再用双层遍历循环来做新旧数组对比,寻找新增元素了!使用array.includes和Set来提升代码可读性
这类问题的重点在于能不能突破基础思路,突破基础思路是从程序员入门变成中级甚至高级的第一步,如果所有需求都通过最基础的业务逻辑来做,是得不到成长的。原创 2024-06-01 16:06:41 · 2069 阅读 · 2 评论 -
多维数组操作,不要再用遍历循环foreach了!来试试数组展平的小妙招!array.flat()用法与array.flatMap() 用法及二者差异详解
理论上array.flat()能做的事情,array.flatMap()都可以做,但是array.flat()更简单,占用内存更少,执行更快。原创 2024-05-31 22:07:13 · 2670 阅读 · 0 评论 -
你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解
onMounted作为vue3中最常用的钩子函数之一,能够灵活、随心应手的使用是每个Vue开发者的必修课,同时根据其不同写法的特性,来选择最合适最有利于维护的写法。原创 2024-05-25 17:33:09 · 21536 阅读 · 11 评论 -
通过el-tree自定义渲染网页版工作目录,实现鼠标悬浮显示完整名称、用icon区分文件和文件夹等需求
将服务器的工作目录渲染到前端页面上是经常遇到需要实现的需求,其中从后端API获取本地目录信息后,将数据渲染成自定义的前端工作目录是篇博客将要谈到的主要内容原创 2024-05-21 17:24:06 · 2278 阅读 · 2 评论 -
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。原创 2024-05-12 16:43:25 · 2561 阅读 · 4 评论 -
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。原创 2024-05-11 21:57:14 · 2968 阅读 · 5 评论 -
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。原创 2025-01-20 23:56:40 · 7657 阅读 · 27 评论 -
shpfile转GeoJSON;控制shp转GeoJSON的精度;如何获取GeoJSON;GeoJSON是什么有什么用;GeoJSON结构详解(带数据示例)
在使用Openlayers、leaflet、mapbox等地图控件的时候,GeoJSON几乎是不可避免打交道的数据类型,如果您想要从事gis行业相关的开发工作,本篇文章应该能为您带来一些帮助。原创 2024-05-04 14:00:00 · 3924 阅读 · 16 评论