
前端
前端技术
清风细雨_林木木
把复杂的知识简单到通俗易懂。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
什么是B端和C端,主要是做什么的?
B端和C端是产品运营中的常见分类,分别指面向企业(Business)和消费者(Consumer)的两种业务模式。B端产品服务于企业客户,如CRM系统、SaaS平台等;C端产品面向个人用户,如微信、抖音等大众应用。简单来说,B端是企业级服务,C端是个人消费级产品。两者的区别主要在于目标用户群体和产品功能定位。原创 2025-08-16 20:27:31 · 103 阅读 · 0 评论 -
Redis 的5大核心功能
Redis作为多功能中间件,远不止是缓存工具。它支持多种数据结构(String/List/Set等)、消息系统(Pub/Sub)、分布式锁/限流等协调能力,以及Stream消息队列、Geo位置等高级功能。通过TTL、原子操作和持久化等特性,Redis能高效处理用户信息、验证码、热点数据等场景。其分布式特性支持秒杀系统、全局ID生成等复杂需求,而高级数据结构则适用于排行榜、签到系统等业务。Redis集存储、通信、排序和分布式控制于一体,是构建大型系统的重要基础设施。原创 2025-07-26 18:18:56 · 405 阅读 · 0 评论 -
Element-UI 解决省市级数据
摘要:介绍两个中国行政区划数据包的差异和使用方法。china-area-data提供原始省市数据,element-china-area-data是其针对Element UI封装的版本。Vue项目可直接使用后者,通过npm install安装后,在el-cascader组件中导入regionData即可快速实现省市区选择功能。安装时可根据需求选择单独安装封装版或同时安装两个包。原创 2025-07-24 12:31:15 · 200 阅读 · 0 评论 -
解决滚动条直角显示
本文介绍了一种实现圆角滚动区域的设计方案:通过嵌套两层容器,外层设置圆角和overflow:hidden控制圆角显示,内层设置overflow-y:auto实现内容滚动。示例代码展示了基础实现和实际应用场景(如弹窗表单),重点在于将滚动行为限制在内层容器,同时保持外层圆角效果。这种设计模式包含三个关键部分:外层容器控制布局和圆角、内层滚动容器处理滚动、内容区域放置实际内容。原创 2025-07-24 10:57:39 · 191 阅读 · 0 评论 -
现代网站的常见风格分为以下 9 大类
现代网站设计风格主要分为9大类:1)极简风-强调留白与简洁,适合作品集;2)黑暗风-深色背景凸显科技感;3)多彩插画风-活泼明快,适合教育类;4)扁平化-纯色线条,功能导向;5)霓虹未来风-赛博科技感;6)玻璃拟态-半透明毛玻璃效果;7)材料设计-谷歌规范,系统感强;8)杂志排版风-注重字体与视觉冲击;9)动态交互风-丰富动效增强体验。每种风格在配色、适用场景和关键词上各具特色,可根据项目需求选择对应设计语言。原创 2025-07-10 09:35:54 · 429 阅读 · 0 评论 -
Marker SVG(可缩放矢量图形)绘制图形
绘制矩形和圆形,尝试修改 fill 与 stroke。,去除图标制作,专注于前端开发中的绘制与使用。数据可视化(饼图、折线图、柱状图)网站图标(logo、icon)UI 元素(按钮、装饰线条):用 path 画一条波浪线。标签及 viewBox。:给矩形添加渐变填充。原创 2025-07-10 08:32:57 · 562 阅读 · 0 评论 -
项目中字典数据的优化办法
字典数据优化方案:前端项目中,字典数据(如状态、类型等)通常存储于Vuex,但页面刷新会导致数据丢失,需重复调用接口。优化方案采用localStorage+Vuex结合:页面加载时先检查localStorage缓存,若存在未过期数据则直接存入Vuex使用;若无缓存则调用接口获取数据,同时存入Vuex和localStorage。该方案减少接口请求,提升加载速度,优化用户体验。核心流程:检查缓存→有则用,无则取→同步存储。原创 2025-07-08 12:58:43 · 224 阅读 · 0 评论 -
mysql2/promise 中 execute 和 query 的使用
MySQL2/promise提供了execute和query两种查询方法: execute使用预处理语句,严格类型检查,防SQL注入但参数限制多 query直接拼接SQL,对LIMIT/OFFSET等参数更宽松 最佳实践:高频查询和写入操作用execute,特殊参数场景用query 注意execute处理LIMIT/OFFSET时需直接拼接数字常量 (字数:99)原创 2025-07-08 09:56:39 · 304 阅读 · 0 评论 -
在 js 中怎么生成最可靠的唯一值
本文探讨了在JavaScript中生成可靠唯一值的几种方法,针对常见的重复问题提出了三种解决方案:1) 添加重试逻辑的组合token生成方式;2) 数据库查重机制;3) 改进的token生成算法。重点分析了基于SHA256哈希(结合用户ID和时间戳)与纯随机数两种生成方式的优劣,指出前者在可追溯性和业务可用性上更具优势。推荐使用包含时间戳、随机字符串和用户哈希的组合算法,这种方案既保证唯一性又便于问题排查。原创 2025-07-04 10:55:42 · 660 阅读 · 0 评论 -
Element 的 Message 多个显示时,只显示一个的封装办法
本文介绍了如何优化Element UI的Message组件,使其在显示多个相同消息时只展示一个。通过创建自定义Message工具类实现以下功能: 消息缓存和去重管理,防止重复显示相同消息 支持success、error、warning、info四种类型消息 提供closeAll()和closeByType()方法关闭消息 自动清理过期消息缓存,防止内存泄漏 完全兼容原有this.$message用法 实现步骤包括创建message.js工具类、修改main.js全局配置、更新API和公共方法中的调用方式。优原创 2025-07-03 22:34:52 · 343 阅读 · 0 评论 -
Vue 项目在哪里加载「字典数据」最好
【最佳实践】Vue项目中建议在App.vue的created()生命周期中调用Vuex action初始化字典数据,配合Vuex统一管理。具体实现:1)在Vuex store创建dictionary模块存储数据;2)App.vue启动时调用fetchDictDataaction;3)全局组件通过$store访问缓存数据。优势:单次请求、全局可用、维护简单。特殊场景可采用路由守卫刷新(实时性要求高时)或SSR预取方案。进阶优化可添加本地缓存和过期策略。原创 2025-07-03 17:58:54 · 433 阅读 · 0 评论 -
Vue 项目集成 Docsify 使用说明(2) 添加权限控制
本文介绍了在Vue项目中为Docsify文档页面添加权限控制的4种方案:路由层面保护(推荐)、Vue组件层面保护、Docsify HTML层面保护和登录重定向机制。核心是通过路由守卫、组件检查、HTML脚本和跳转优化,确保只有登录用户才能访问文档。方案包括代码示例和测试场景说明,可灵活扩展到其他页面。4层机制共同保障文档安全性和用户体验。原创 2025-07-01 15:51:50 · 559 阅读 · 0 评论 -
Vue 项目集成 Docsify 使用说明(1)
本文介绍了在Vue项目中集成Docsify文档系统的两种方案。推荐使用iframe嵌入方式,通过在Vue项目中创建DocsifyPage.vue组件,并在public/docs目录下配置Docsify文档结构(包括index.html、README.md、侧栏导航等文件)。iframe方案简单安全,与Vue主应用隔离。文章还提供了详细的Docsify配置示例,包括主题设置、搜索功能和移动端优化等。另一种方案是直接集成Docsify,但复杂度较高。整体方案包含文档目录结构说明和代码实现示例,帮助开发者快速搭建原创 2025-07-01 11:57:23 · 999 阅读 · 0 评论 -
使用 em 单位的好处,以及 em、rem、px 的区别
摘要:文章探讨了使用em单位的好处及其与其他单位的区别。em作为相对单位,能根据父元素字体大小自动调整,提供更好的响应式设计和用户体验,尤其尊重用户浏览器字体设置。与rem(根元素相对)和px(绝对单位)不同,em特别适合底部组件设计,确保可读性和一致性。使用.875em等比例值能有效协调元素大小,体现了现代Web开发对可访问性和响应式设计的重视。原创 2025-06-29 18:11:31 · 250 阅读 · 0 评论 -
DOM 中 scrollWidth(实际内容宽度) 和 clientWidth(可视区域宽度)
scrollWidth和clientWidth是判断内容溢出的关键DOM属性。clientWidth表示元素可视宽度(不含滚动条和边框),而scrollWidth反映实际内容总宽度。若内容未溢出,两者相近;若溢出,scrollWidth更大。通过比较二者可检测溢出情况,常用于实现省略号或提示功能。例如:100px宽度的容器内220px内容会使scrollWidth(220)>clientWidth(100),表明需要处理溢出。原创 2025-06-21 19:10:49 · 210 阅读 · 0 评论 -
使用 Buffer.from(file.originalname, ‘latin1‘).toString(‘utf8‘) 以后不出现乱码是为什么?
中文文件名上传乱码的解决方案:当使用multipart/form-data上传文件时,文件名可能被错误地用Latin1编码解析导致乱码。通过Buffer.from(file.originalname, 'latin1').toString('utf8')可手动纠正编码:先将乱码字符串按Latin1还原为原始字节,再用UTF-8正确解码。该方法适用于处理multer等中间件接收中文文件名时出现的"文件"类乱码问题,有效恢复原始文件名如"文件.txt"。最佳实践建原创 2025-06-20 16:27:32 · 265 阅读 · 0 评论 -
Express 中用于返回响应的两种常用方法 res.status(200).json() 和 res.status(200).send()
在 Express 中,res.json() 和 res.send() 的区别主要在于响应格式和数据类型处理。res.json() 会自动设置 Content-Type 为 JSON 并转换数据为 JSON 格式,适合 API 响应;而 res.send() 可返回任意类型数据(文本/HTML/Buffer),适合非结构化响应。建议 API 统一使用 res.json() 返回 JSON 数据,需要返回 HTML 或纯文本时使用 res.send()。两种方法都能返回对象,但 res.json() 更为可靠原创 2025-06-20 10:32:49 · 223 阅读 · 0 评论 -
Cursor开发工具Prettier格式插件配置
这篇JSON配置文件摘要了VS Code编辑器及相关插件的个性化设置,主要包括:Tabnine AI补全的实验性自动导入、文件类型关联映射、Emmet扩展支持、Git自动拉取、编辑器缩进格式(2空格)、Prettier格式化规则(单引号/不换行/保留分号)、代码迷你地图启用等优化配置,同时关闭了部分插件的自动功能和提示信息。这些设置共同优化了开发环境的代码编辑、格式化和版本控制体验。原创 2025-06-19 13:16:36 · 156 阅读 · 0 评论 -
Cursor添加Prettier插件格式化vue代码
Prettier代码格式化配置指南 摘要:本文详细介绍了Prettier代码格式化工具的使用方法,重点说明了如何通过VS Code配置实现"一行显示"的特殊格式化效果。内容包括:1) Prettier插件安装步骤;2) 关键配置参数说明,特别是通过设置超长printWidth(10000)实现代码强制单行显示;3) 其他常用Prettier选项如单引号、无分号、无尾逗号等设置。文中还附带了完整的配置示例和详细注释,帮助开发者理解每个参数的作用。原创 2025-06-18 07:42:51 · 459 阅读 · 0 评论 -
使用 Unicode 图标显示什么时候推荐,什么时候不推荐
在代码中使用Unicode图标(如📄📋)是可行的,但适用性因项目而异: ✅ 推荐场景: 小型/个人项目:直观快捷,无需额外资源。 移动端/Web页面:兼容性好,避免图标库依赖。 ⚠️ 谨慎使用: 企业级项目:不同系统/浏览器显示可能不一致。 定制化UI:无法控制颜色和风格统一。 📌 建议: 小型项目直接使用Unicode图标,商业项目推荐iconfont/SVG方案,动态场景可用JS映射管理(如Vue示例)。原创 2025-06-16 08:42:51 · 351 阅读 · 0 评论 -
图表工具 ECharts vs Chart.js 对比
ECharts和Chart.js是两大主流前端图表库,各具特色。ECharts由百度开发,提供丰富图表类型(含地图和复杂交互),适合大数据量和企业级应用,但配置较复杂;Chart.js社区驱动,轻量易用,适合简单图表和快速开发。在Vue项目中,两者均有专用封装(vue-echarts/vue-chartjs)。选择建议:复杂可视化用ECharts,轻量需求选Chart.js。原创 2025-06-14 11:13:18 · 603 阅读 · 0 评论 -
Cursor 中三个选项 Agent 、 Ask 和 Manual 含义
Cursor提供三种AI交互模式:Agent模式让AI主动处理代码任务(如生成/重构代码);Ask模式需手动提问获取AI建议;Manual模式则完全关闭AI功能。推荐根据需求选择:Agent适合自动化操作,Ask适合针对性提问,Manual适合纯手动编程。各模式切换灵活,满足不同开发场景需求。(149字)原创 2025-06-01 16:05:54 · 2261 阅读 · 0 评论 -
Css样式中设置gap: 12px以后左右出现距离问题解析
摘要: 问题现象是flex布局的gap属性在单子元素容器中产生了间距,原因在于框架默认添加的::before/::after伪元素被gap识别为子节点。通过开发者工具可验证伪元素存在,导致.el-input与伪元素间各产生12px间距。解决方案包括:1) 清除伪元素布局影响(推荐用display:none);2) 改用margin-left替代gap控制间距。该问题常见于Element-UI等框架的表单项布局场景。(150字)原创 2025-05-30 17:16:27 · 818 阅读 · 0 评论 -
微信扫码登录 - 公众号网页授权,总结(二)返回指定页面
本文介绍微信扫码登录公众号网页授权的回调处理流程,重点说明如何根据授权状态返回不同页面。核心步骤包括:1) 校验授权完整性,判断是否获取用户信息权限;2) 检查是否为匿名用户;3) 查询用户是否关注公众号;4) 根据判断结果返回对应的HTML页面(授权失败页/未关注页/已关注页)。文中提供了完整的代码实现,包括用户信息获取、关注状态检查和页面返回逻辑,并附有流程图说明整个判断流程。通过该方案可实现针对不同授权状态的差异化页面展示。原创 2025-05-27 11:56:47 · 214 阅读 · 0 评论 -
微信扫码登录 - 公众号网页授权,总结(一)成功返回聊天界面
本文总结了微信扫码登录的实现流程:1) 后端生成带授权链接的二维码;2) 用户扫码后通过微信授权获取用户信息;3) 回调处理逻辑包括获取access_token、查询用户数据或注册新用户;4) 最终返回自动关闭页面。关键点包含二维码生成、OAuth2授权、用户信息获取及数据库操作,通过WebSocket实现前后端登录状态同步,完成闭环登录流程。原创 2025-05-27 11:43:16 · 372 阅读 · 0 评论 -
解决 Tailwind CSS 代码冗余问题
Tailwind CSS 虽然功能强大,但容易导致 HTML 类名冗长和代码冗余。为解决这一问题,可以采取多种策略:使用 @apply 指令提取重复样式、创建可复用组件、借助编辑器插件优化开发体验、启用 JIT 模式提升性能、自定义工具类以满足特定需求、使用 clsx 或 classnames 库动态管理类名,以及定期重构和抽象代码。其中,定期维护和升级是确保代码简洁高效的关键。通过这些方法,可以有效减少 Tailwind CSS 的冗余问题,提升代码可读性和可维护性。原创 2025-05-18 19:15:08 · 380 阅读 · 0 评论 -
Flowbite 和 daisyUI 那个好用?
Flowbite 和 daisyUI 是基于 Tailwind CSS 的组件库,各有特色。daisyUI 上手简单,支持多主题切换,适合快速开发和轻量项目;Flowbite 设计更正式,组件丰富,适合企业级应用。daisyUI 天然兼容 Vue,Flowbite 需额外插件。两者社区活跃,但 Flowbite 更新更频繁。选择取决于项目需求:daisyUI 适合个人项目和快速迭代,Flowbite 更适合企业官网和管理后台。原创 2025-05-17 15:29:48 · 679 阅读 · 0 评论 -
为什么不推荐在页面中大量使用 PNG 图片
PNG 虽然清晰,但在 Web 上体积太大,不适合大量使用,除非你真的需要透明背景或图形质量无损。原创 2025-04-20 01:26:58 · 182 阅读 · 0 评论 -
不同网页图片大小应该怎么选择
【代码】不同网页图片大小应该怎么选择。原创 2025-04-20 01:23:55 · 296 阅读 · 0 评论 -
小程序获取用户总结(全)
说实在话,小程序的开发团队真的需要优化一部分人,这个接口前后都不知道改了几遍,这种关键接口反反复复搞,别说初学者,即便是做过小程序的人都头大,单是整理这个资料就花了很久的时间,是应该反省一下了。还有,小程序的开发社区,那是什么狗屎社区,基本没有起到解决问题的效果,大部分都是自己找资料解决。还有一些开发人员,自己做的一堆狗屎文档,解决不了问题还盛气凌人的态度,现在小程序成绩是前人的努力结果,并不是现在的你,坐着大办公室,整天不干正事,很多就是披着高校的皮,做事一点不靠谱!原创 2025-04-15 13:33:05 · 1376 阅读 · 0 评论 -
Element 使用 textarea 内容实现高度自适应
属性来实现内容高度自适应。当没有内容时默认显示 3 行,当有内容时根据内容动态调整高度。原创 2025-04-04 02:11:19 · 521 阅读 · 0 评论 -
Vue 中 this.$emit(“update:xx“,value) 和 :xx.sync 实现同步数据的做法
在 Vue 2.x 中,和xx.sync都是用来实现父子组件之间的数据同步的方式,它们背后的工作原理有些相似,但语法上有所不同。让我们逐个详细解释这两者的使用方式。xx.syncxx.sync是 Vue 提供的一种语法糖,用来简化子组件和父组件之间数据同步的操作。它的工作原理是自动化地监听update:xx事件并更新父组件的数据。实际上,xx.sync是v-bind和v-on的组合,背后也调用了。原创 2025-04-02 19:52:30 · 659 阅读 · 0 评论 -
WebSocket 传输大量数据好不好?稳定不稳定
使用是可行的,但在实际应用中需要注意一些限制和优化策略。原创 2025-03-22 19:32:08 · 1434 阅读 · 0 评论 -
Selenium自动化测试框架基本操作
自动化测试前端页面获取方式总结备注:注意selenium版本,低版本使用的一般是“driver.find_element_by_id(element_id)”# 根据xpath选择元素# 根据css选择器选择元素# 根据name属性值选择元素# 根据类名选择元素# 根据链接文本选择元素# 根据包含文本选择# 根据标签名选择# 根据id选择。原创 2024-05-16 17:37:22 · 396 阅读 · 0 评论 -
error: src refspec master does not match any error: failed to push some refs to……
因此你可能需要确保你的本地仓库中存在 main 分支,并且你尝试推送到正确的分支。这个错误通常是由于尝试推送到一个不存在的分支(通常是 master 分支)引起的。原创 2024-02-27 22:53:04 · 2143 阅读 · 0 评论 -
Git解决代码冲突提示语的含义
文章目录Git解决代码冲突提示语的含义Git解决代码冲突提示语的含义提示含义Accept Current Change接受当前更改(以本地代码为主)Accept Incoming Change接受传入的更改(以传入代码为主)Accept Both Change接受两种(两种代码都保存)Compare Change在原代码中进行比较原创 2023-10-13 14:56:18 · 528 阅读 · 0 评论 -
JS中sort()方法返回值?
引用就是别名。同样是指向 ADDR1,可以是 list,newArr, list1 任意变量,都是它的引用。大概意思就是,返回引用就是返回一个新的。原创 2023-03-13 21:01:07 · 1988 阅读 · 0 评论 -
百度编辑器UE 中config.json和ueditor.config.js 有什么不同?
的好处是可以在前端页面中方便地修改和调试UEditor的配置信息,但也需要在每个页面中手动引入和配置该文件,不便于统一管理。通过配置config.json,可以实现统一管理多个网站或应用的UEditor配置信息,便于维护和更新。使用的配置文件,需要手动引入和配置,不方便统一管理。及以后版本中新增的一个配置文件,可以方便地统一管理。及以后版本中新增的一个配置文件,它通常用于在。的文件,但它们的作用和使用方式有所不同。文件所在的路径,并将其中的配置项传递给。文件,需要在前端页面中手动引入。原创 2023-03-13 20:49:27 · 702 阅读 · 0 评论 -
百度编辑器 动态修改图片地址,imageUrlPrefix、imageManagerUrlPrefix 等
【代码】百度编辑器 动态修改图片地址,imageUrlPrefix、imageManagerUrlPrefix 等。原创 2023-03-13 16:48:07 · 235 阅读 · 0 评论 -
LNMP 搭建总结
LNMP分别代表LinuxNginxMySQL和PHP。原创 2023-03-05 10:59:40 · 650 阅读 · 0 评论