前端踩坑路漫漫
前端遇到的问题和经验分享
小鱼小鱼干
料峭春风吹酒醒,微冷
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【前端】IndexedDB 常用 API 详解
IndexedDB核心API摘要: IndexedDB提供浏览器端数据库操作API,主要包括: 数据库操作:open()打开/创建数据库,deleteDatabase()删除数据库,databases()获取库列表 对象存储:createObjectStore()创建数据表结构,支持定义主键和索引 数据CRUD:通过add()/put()添加数据,get()查询,delete()删除,clear()清空 高级查询:支持索引查询(getAll)和游标遍历(openCursor),可实现范围查询 事务支持:通过原创 2025-11-12 15:08:15 · 284 阅读 · 0 评论 -
【Windows】tauri+rust运行打包工具链安装
本文介绍了Windows下开发Tauri应用所需的工具链配置。主要包括MinGW-w64(提供GNU工具链)、Scoop(包管理工具)和GCC(C/C++编译器)。Tauri需要这套工具链是因为:1)Rust生态依赖C编译器;2)需要编译系统交互代码;3)确保跨平台一致性。文章详细解释了安装步骤和依赖关系,并对比了MinGW和MSVC方案,指出MinGW因其开源生态兼容性和文件体积优势而更受推荐。最后提供了常见问题的解决方案和环境变量配置建议。原创 2025-11-11 16:51:14 · 363 阅读 · 0 评论 -
【js+vite】如何在产品页面加上本次成果物打包时间
本文介绍了在前端项目中显示打包时间的方法,通过Vite配置注入构建时间常量,并在页面展示该时间戳。主要步骤包括:1)在vite.config.js中定义__BUILD_TIME__常量;2)在Vue组件中引用该常量并显示。实现效果是页面底部固定显示静态打包时间,便于问题排查。注意打包后时间应保持不变,否则说明配置有误。原创 2025-11-11 10:09:34 · 297 阅读 · 0 评论 -
【JS】import进来的变量是活的吗?
模块变量共享问题解析 当多个文件(a/b)通过import引入同一个export let变量时,所有文件访问的都是同一个内存引用。若a文件修改了该变量,b文件使用时将获得修改后的值,而非初始值。 关键点: ES模块的export let具有"活绑定"特性,导入的变量始终指向最新值 修改会全局生效,但需注意执行顺序(先修改再使用) 使用export const或export default对象会导致不同行为(前者不可变,后者可能产生快照) 建议:明确使用let+修改函数管理共享状态,避免直原创 2025-07-02 17:02:11 · 296 阅读 · 0 评论 -
【JS】JavaScript 中的 Class 和 Constructor 详解
JavaScript 的 class 和 constructor 是 ES6 引入的面向对象编程语法。class 作为对象模板,封装属性和方法,必须用 new 调用,类体默认严格模式。constructor 是类的特殊方法,用于初始化对象实例,每个类只能有一个。ES6 类还支持静态方法/属性、私有字段(#前缀)、getter/setter 以及通过 extends 实现继承。相比传统构造函数,类语法更清晰直观,虽然本质仍是基于原型的语法糖,但提供了更接近传统 OOP 语言的开发体验。原创 2025-07-02 10:02:23 · 836 阅读 · 0 评论 -
一行代码实现数字格式化带千位分隔符,“23,456,789“,数字加逗号就是这么简单
这篇技术文章介绍了一段简洁的JavaScript代码,使用正则表达式实现数字千位分隔符格式化。核心代码'1234567'.replace(/\B(?=(\d{3})+$)/g, ',')通过正则表达式在每三位数字间插入逗号。文章详细解析了正则表达式各部分的含义:\B匹配非边界位置,正向预查(?=...)确保后面有完整的三位数字组,组合后从右至左在合适位置插入分隔符。这种方案简洁高效,适用于各种长度的数字字符串格式化需求。原创 2025-06-27 11:51:42 · 289 阅读 · 0 评论 -
不会还有人在传统网页定位修改,看我用一行JS代码让你的网页变为可编辑
designModeDocument 的 designMode 属性控制整个文档是否可编辑。你可以使用它使网页上的所有内容都可编辑,浏览器兼容性: designMode览器中都受支持。转载 2025-04-22 14:10:02 · 253 阅读 · 0 评论 -
Vue Router两种路由实现方式异同点总结
Vue.js 中的路由主要通过 Vue Router 实现,它支持多种路由模式,其中最常用的两种是 hash 模式和 history 模式。这两种模式在 URL 结构、工作原理以及对服务器配置的要求上有所不同。原创 2024-11-18 09:57:16 · 765 阅读 · 1 评论 -
visualMap实现根据value自定义单项颜色及图例
【代码】visualMap实现根据value自定义单项颜色及图例。原创 2024-08-20 15:37:00 · 567 阅读 · 0 评论 -
原生JS如何实现可配置DM码
组件可配置属性:value文本 DM码文本信息;margin边距 DM码边距;foreground前景色 DM码方格颜色;background背景色 DM码底层背景色; 三、 实现步骤实现主要涉及两个文件,界面文件Dmcode.vue和方法文件datamatrix.js,后文会贴出全部代码。原创 2024-06-13 10:10:51 · 1034 阅读 · 0 评论 -
vue-loader和vue-template-compiler版本不一致问题
【代码】vue-loader和vue-template-compiler版本不一致问题。原创 2024-05-28 10:42:56 · 1284 阅读 · 0 评论 -
upload组件封装,支持拖拽文件上传
组件化思想:组件应该是独立的、可复用的部件,应该遵循单一职责原则,将组件的功能划分得尽可能细致。API 设计:组件的 API 设计要合理,要考虑到组件的可定制性和易用性。应该尽可能的提供必要的配置项和事件回调,同时避免提供过多的 API,导致 API 过于复杂。生命周期:组件的生命周期要合理地使用,尤其是对于需要与外部交互的组件,要注意生命周期的时机,以便在组件的不同阶段进行相应的操作。组件通信:组件通信是组件化开发中的一个重要问题,Vue 中提供了多种通信方式,包括props、emit、emit、e原创 2024-05-11 16:40:55 · 1137 阅读 · 0 评论 -
前端工程部署步骤小记
Vue创建Demo项目:https://blog.csdn.net/weixin_41924879/article/details/128828854。webpack初始化项目参数详解:https://blog.csdn.net/qq_31754523/article/details/99622172。6、使用 vue init webpack命令创建一个项目(项目名不能用大写字母):vue init webpack design-system。4、更新插件 vue upgrade --next。原创 2024-03-07 19:47:08 · 505 阅读 · 0 评论 -
$attrs
vue官网定义如下:包含了父作用域中不作为 prop 被识别 (且获取) 的 attribute 绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过v-bind="$attrs"传入内部组件——在创建高级别的组件时非常有用。原创 2024-02-22 16:50:24 · 556 阅读 · 0 评论 -
代码审核提升小Tip
定时器的第一个参数应该是函数而不是函数的结果,this.handleqQuery 的返回值不是函数 此方法会报错。3、【优化】通过匹配key获取目标值。1、【优化】格式化日期,0的填充。2、【缺陷】定时函数书写。4、多余的三点表达式。原创 2023-07-19 15:15:39 · 651 阅读 · 0 评论 -
vue实现table自动滚动
客户需求:右下角表格实现自动滚动本案例中没有使用任何第三方插件,全部使用vue中相关的js、css以及定时器方式实现。解决问题的第一步不是找代码,而是分析问题。列表自动滚动常见方式有两种(上下左右的滚动不赘述,只是方向的问题,本案例以向上自动滚动为例):(1)匀速滚动 (2)有间隔的平滑滚动。本案例先给出匀速滚动的方案。要匀速向上滚动,以我的经验,最容易想到的是用定时器实现,每隔一个时间差,列表向上移动一个像素(大于一个像素,可能会在视觉上给人卡顿掉帧的感觉),在时间够短的前提下,就会给人一种匀速向上的转载 2023-06-12 16:28:17 · 5657 阅读 · 2 评论 -
理解canvas元素,绘制简单2D绘图形
JavaScript 代码可以访问该区域动态在上面绘制图片,类似于其他通用的二维 API,通过一套完整的绘图函数来动态生成图形。canvas最早是苹果公司提出并准备用在控制面板中的,随着其他浏览器的迅速跟进,HTML5 将其纳入标准。所以图中蓝色方形左上角的坐标为距离左边(X 轴)x 像素,距离上边(Y 轴)y 像素,坐标为 (x,y)。因为这个方法是后来才增加到规范中的,所以支持的浏览器也是在后面的版本实现的,包括 IE9、Firefox 3.5 和 Opera 10。如果你要给每个图形上。原创 2023-05-22 20:43:33 · 1287 阅读 · 0 评论 -
左右icon切换中间图片逻辑,坑:if判断条件不要连写
坑:if的判断条件要注意不要连写,0 < index && index < (list.length-1)!原创 2023-04-18 17:06:33 · 227 阅读 · 0 评论 -
通过:style实现css动态赋值颜色
1、先动态给一个颜色变量。原创 2023-03-03 14:34:11 · 3390 阅读 · 0 评论 -
【echarts】图表配置tooltip 的formatter,如何获取并显示返回值的其他字段,附示例
分别表示系列名,数据名,数据值等。在 trigger 为 ‘axis’ 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。说到底,无论是哪种方式,最终formatter的return值都是字符串,所以我们需要做的就是字符串的拼接,回调函数的方式的优势在于处理字符串更加灵活,调用属性的方式获取想要的值,可读性更高。{b},{c},{d},{e},分别表示系列名,数据名,数据值等去做拼接来展示,只能展示显示的图表看到的数据,原创 2023-01-14 16:09:24 · 28196 阅读 · 5 评论 -
【表格拼接】实现左右行数不等表格
当无法使用rowspan、colspan实现复杂表格时,不妨试试拼接表格,注意左右线对其即可。原创 2022-08-19 15:28:32 · 358 阅读 · 0 评论 -
<table><tr>不换行,使用rowpan导致表格错位
当某一个tr中所有的td元素的rowspan属性均大于1时,会发生错位情况。因为rowspan是用来占行的,如果一行里全部td的 rows 都为2,则意味着 下一tr 里应该是没有 td 元素的但是实际上 下一tr 又有td,所以这行的td没有容身之处,被挤到右边去了。如下图,第二行有两个元素,当第一行也有两个未跨行元素时,第二行就会正确显示,而不是被挤到右边。...原创 2022-08-04 10:51:11 · 2547 阅读 · 0 评论 -
【echarts】stack实现堆叠柱状图
同个类目轴上系列配置相同的stack值可以堆叠放置,stack只支持堆叠于‘value’和‘log’类型的类目轴上。原创 2022-07-27 11:26:35 · 10408 阅读 · 0 评论 -
【table】复杂表格示例,多行表头,包含横表头+纵表头
【table】复杂表格示例,多行表头,包含横表头+纵表头原创 2022-07-26 20:16:13 · 4170 阅读 · 0 评论 -
动态样式:根据时间长短绘制色块宽度和颜色,鼠标hover显示具体信息
根据时间长短绘制色块宽度和颜色### 目标效果:根据时间长短绘制色块宽度和颜色:鼠标hover显示具体信息:——>原创 2022-07-26 19:38:22 · 414 阅读 · 0 评论 -
【Canvas】绘制时间轴+动态当前时间线
/一分钟的宽度,每十分钟一小格每六个小格一个大格。重要ctx赋值全局变量,以免传输中改变。//超过2030时间从2030开始显示。//计算出当前时间与830之间的差值。//绘制时间轴时间线。//绘制动态时间线。...原创 2022-07-25 15:55:16 · 2621 阅读 · 0 评论 -
《将博客搬至CSDN》
掘金地址https//juejin.cn/user/3734413456966237。《将博客搬至CSDN》原创 2022-07-25 14:33:13 · 154 阅读 · 0 评论 -
【Canvas】绘制时钟
坐标轴x的正方形从向上开始算起。//把坐标轴的远点平移到原来的中心。*参数1要绘制的针的角度。*参数2要绘制的针的长度。*参数3要绘制的针的宽度。*参数4要绘制的针的颜色。/*绘制时针、或分针、或秒针。//一定坐标原点到原来的中心。//计算出来秒针的弧度。//计算出来分针的弧度。//计算出来时针的弧度。/*绘制时分秒针*///沿着x轴绘制针。...原创 2022-07-22 11:25:34 · 158 阅读 · 0 评论 -
【Canvas】绘制表格+圆角矩形色块
使用canvas绘制完整表格表头,以及绘制圆角矩形色块原创 2022-07-22 11:20:00 · 3045 阅读 · 0 评论 -
[JS] 项目中常用日期方法:setDate getDate toLocaleDateString……
代码】[JS]项目中常用日期方法setDategetDatetoLocaleDateString……原创 2022-07-13 14:59:46 · 372 阅读 · 0 评论 -
【vue】如何根据变量名称获取此变量?
<van-field v-model="matCode" @click="handleMatCode(matCode, 'matCode')" label="零件编号"></van-field><van-field v-model="catchMatCode" @click="handleMatCode(catchMatCode, 'catchMatCode')" label="零件编号"></van-field>-------------------原创 2022-05-13 11:26:32 · 1640 阅读 · 1 评论 -
VsCode+Node的前端环境搭建
1、下载vscode,地址:https://code.visualstudio.com/2、下载nodejs, 地址:https://nodejs.org/zh-cn/download/,完成后输入npm -version验证是否成功。3、找个前端项目编译运行试试:在项目文件夹下打开命令行,安装依赖 npm install(或者vscode开终端输命令也可以,但是我这边vscode提示找不到npm,所以直接cmd开的命令行)。4、如果出现npm install卡顿问题可以使用代理解决:先清理原创 2022-02-12 11:03:46 · 1378 阅读 · 0 评论 -
【JS】日期Date如何格式化为年月日yyyy-MM-dd hh:mm:ss
如何将日期Date转换为指定的格式:如 yyyy-MM-dd hh:mm:ss 或者 yyyy-MM-dd ?可以为Date原型添加如下的方法:Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, //月份 "d+" : this.getDate(), //日 "h+" :转载 2022-01-18 15:40:12 · 19961 阅读 · 0 评论 -
background-size中,contain、cover、100%的区别
语法:background-size: length|percentage|cover|contain;值描述length设置背景图像的高度和宽度; 第一个值设置宽度,第二个值设置高度;如果只设置一个值,则第二个值会被设置为 “auto”。percentage以父元素的百分比来设置背景图像的宽度和高度;第一个值设置宽度,第二个值设置高度;如果只设置一个值,则第二个值会被设置为 “auto”。cover把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某原创 2021-11-29 15:42:33 · 3054 阅读 · 0 评论 -
同一个安卓壳子打出来的apk包如何避免相互覆盖
本来相互覆盖是没有问题,但是业务需要两个app同时存在。以此文章记录踩坑过程及正解。经查看两个apk包:apk名不同;签名相同;applicationId相同【解决方法】1、找到app目录下build.gradle文件,搜索applicationId,修改其中一方与另一个不同,比如:// 修改前两方都是:applicationId "com.app.robot"// 修改其中一个为:applicationId "com.app.wmsrobot"2、重新build,打包,此时两个a.原创 2021-11-19 11:49:19 · 3882 阅读 · 0 评论 -
Cannot read property ‘cancelToken‘ of undefined“
全局搜索没有“cancelToken”这个变量,所以是接口调用过程产生的bug,查下报错的模块相关的Axios代码。我这个是因为function login() { return Axios.post('permit/token') // 错误一: url错误,应该是'https://www.baidu.com/'这种,而不仅仅是一个后缀扔进去; }function login() { let url = creatUrl('permit/token') return Axios.post(原创 2021-11-03 16:13:14 · 225 阅读 · 0 评论 -
Axios POST提交数据的简化写法
使用示例:【旧】import Axios from 'axios'function crestUrl(str) { // 拼接地址 let url = 'http://' + localStorage.ipAddress + ':' + localStorage.port + BASE_URL + str return url }function login(data) { let url = creatUrl('permit/token) return Axios({ heade原创 2021-11-02 11:35:38 · 307 阅读 · 0 评论 -
【css】绝对定位如何居中
对于移动端会有这种情况:上方查询输入框,中间列表时长时短,底部执行按钮。此时需要按钮浮于列表之上,以防被挤下去。1、margin:auto.center{ position: absolute; left: 0; right: 0; top: 0; bottom: 0;// 只要左右居中可以不加top、bottom // bottom: 30px; 可以另外设置想要的上下位置 margin: auto;}2、transform: trans.原创 2021-09-23 20:10:45 · 669 阅读 · 0 评论 -
【Vue】(element、vant)限制输入框只能输入整数
首先,得明确监听input输入框变化的方法是input,不是change。方案一:type= “number”作用:成功禁止输入字母能输入小数点,第一位可以为0,小数点能输入多个eg:01111.5.5 方案二:v-model.number作用:输入过程中能输入字母,但在失去焦点时多余的字母会被清除,且错误的字母不会计入值输入过程中能输入小数,例如:12.3多个错误格式的小数会被清除:例如:12.3.5在失去焦点后会变成12.3第一位可以输入0,但若之.转载 2021-09-07 10:53:26 · 5859 阅读 · 0 评论 -
实时监听输入框变化+$nextTick更新视图
vant: @inputElement: @input原创 2021-09-07 10:48:35 · 491 阅读 · 0 评论
分享