自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 uni-app 踩坑实录:实现“可拖拽全局悬浮按钮”时的 movable-view 坐标失效与 Flex 布局视错觉

《微信小程序悬浮按钮开发避坑指南》总结了实现全局悬浮拖拽按钮时常见的两大坑点及解决方案。第一坑是movable-view组件初始化时X轴坐标失效问题,根源在于垂直拖动模式会锁定X轴响应,解决方案是采用v-if延迟渲染确保坐标计算完成后再初始化组件。第二坑是视觉上出现右侧间隙的"玄学"问题,实为Flex布局未填满导致,可通过flex:1或justify-content:flex-end两种CSS方案解决。文章强调遇到组件异常时要关注生命周期时机和基础布局原理,为开发者提供了实用的避坑经验。

2026-04-22 17:12:02 396

原创 【uni-app踩坑录】scroll-view时而滚不动、时而卡死?彻底解决Flex布局下的高度冲突问题

摘要: 在uni-app微信小程序开发中,遇到一个Flex布局与<scroll-view>的滚动冲突问题:页面滑动时时而失效,甚至触发橡皮筋回弹。原因在于动态内容(如富文本、瀑布流)撑大了<scroll-view>,导致其高度超出外层容器(100vh),引发原生滚动与内部滚动冲突。 解决方案:通过CSS强制约束滚动区域: 外层容器添加 overflow: hidden 禁用原生滚动; 为<scroll-view>设置 flex:1; height:0,使其高度严格由Fle

2026-04-12 20:25:09 260

原创 吐血总结!Uni-app / 微信小程序 iOS 与 Android 经典兼容性踩坑实录

跨端开发本质上是在和各个系统底层的 Webview 打交道。遇到安卓正常、iOS 异常的情况,多往Flex 规范解析差异WebKit 特有属性以及硬件渲染这三个方向思考,基本都能迎刃而解。如果这篇文章帮到了你,或者你遇到了其他奇葩的兼容性问题,欢迎在评论区留言讨论,一起抱团取暖!

2026-04-12 12:21:29 382

原创 彻底搞懂 UniApp 微信小程序最新登录授权闭环:头像昵称获取 + EventChannel 优雅路由回跳

别再执念于前端获取明文手机号:微信新规下,前端只能拿到phoneCode。直接把code扔给后端,让后端去解密并开启数据库事务一并更新用户信息,这才是最安全、数据最一致的做法。警惕的跨级谋杀:在涉及到跨页面的 EventChannel 通信时,永远不要用跨级后退去“暗杀”中间页面。老老实实退 1 层接力传递,或者改用全局uni.$emit,才能保证回调函数被安全执行。延迟回退抵消动画:在执行MapsBack前加上500ms的setTimeout。

2026-03-09 14:19:59 219

原创 UniApp 纯前端实现企业级购物车:Vuex + Storage 多用户状态管理闭环方案

📌纯前端购物车架构方案:针对轻量级电商系统中后端不提供购物车接口的场景,提出基于Vuex+本地存储的解决方案。通过动态存储Key实现多账号数据隔离(MALL_CART_DATA_${userId}),Vuex管理实时状态,Storage持久化数据。核心特点包括:1)完整商品对象存储;2)价格防篡改机制(结算时只传ID和数量);3)生命周期管理(登录/退出时同步状态)。业务层只需简单调用Vuex方法,同时强调前端价格仅作展示,最终需后端校验真实价格和库存。该方案完美解决状态同步、数据隔离和持久化问题,适合敏

2026-03-09 14:18:22 434

原创 【前端架构实战】拒绝切 Tab 白屏!纯手写 Vue/uni-app 多标签页“零延迟缓存”列表架构

本文针对电商/资讯类小程序常见的多Tab分类列表开发痛点,提出了一套优化解决方案。传统实现存在三大问题:切换Tab需重新加载导致白屏、无法记忆滚动位置、快速切换时数据错乱。作者创新性地采用二维Map状态机架构,通过以下设计实现优化: 使用productMap和paginationMap两个字典分别存储各Tab独立的数据和分页状态 核心loadProducts函数实现三重拦截(加载中拦截、无更多数据拦截、缓存命中拦截) 采用闭包快照比对机制防止网络延迟导致的数据串台 配合Vue2的$set方法确保深层嵌套对象

2026-02-22 14:01:19 488

原创 前端架构实战】彻底终结表单重复提交!基于 Map 与闭包实现 API 级防抖与节流

这套架构最大的价值在于**“防御性编程”**。通过 API 级拦截,我们将系统最脆弱的边界(网络 I/O)保护了起来。对开发者:所见即所得,配置极简。对前端:彻底消灭“幽灵 Promise”导致的死锁 Bug。对后端:再也不用半夜起来清理被连点刷爆的脏数据表。建议每个正在重构项目的前端团队,都将这套机制纳入项目的“标准基础设施”。(完)

2026-02-20 11:20:11 547

原创 【前端架构实战】告别满屏报错!基于 Promise 队列实现跨页面 Token 无感重发与并发拦截

前端无感Token续期方案 本文提出了一种企业级前端网络请求架构,通过闭包与Promise队列实现Token过期的无感处理。核心设计采用"收费站模式":当401错误发生时,请求被挂起而非直接跳转登录页,同时触发全局登录弹窗。用户登录成功后,所有挂起请求自动重发,保持用户操作连续性。 方案通过两个全局状态管理: isLoginModalShowing 防止重复弹窗 requestQueue 存储待重试请求 关键实现包括: 请求封装时创建可重试的闭包 统一401拦截时入队处理 登录组件回调时

2026-02-20 11:18:53 558

原创 [特殊字符] 告别“屎山”代码!Vue / uni-app 企业级前端架构与目录命名规范指北(进阶版)

本文系统介绍了Vue/uni-app项目的前端工程化规范,重点强调命名规则与架构解耦。核心要点包括:1)命名规范(组件用PascalCase,工具用camelCase,文件夹用kebab-case);2)分包策略(主包放核心页面,业务模块放入分包);3)组件分层(UI组件与业务组件分离);4)逻辑复用(Vue3推荐composables);5)状态管理按业务域划分。文章还提供了完整的项目目录结构示例,强调规范的长期价值在于提升代码可维护性和扩展性。

2026-02-18 10:03:10 794

原创 拒绝“屎山”代码!Vue2 / uni-app 企业级前端目录与文件命名规范指北

在前端开发中,一个项目的可维护性,很大程度上取决于前期的《工程化规范》。很多团队在项目初期没有定好规矩,导致后期文件命名五花八门,新员工接手时如同在看“天书”。本文总结了 Vue / uni-app 生态中业界极其成熟的**“约定俗成”**潜规则。无论你是准备搭建新项目,还是想重构老项目,只要熟练掌握这套“5大分类命名法则”,你的代码库也能像瑞士名表一样结构精密、井井有条!根目录/├── 📁 api/ (小驼峰) -> user.js, goods.js。

2026-02-18 10:00:46 469

原创 UniApp实战:如何优雅地把 uv-ui (uv-qrcode) 生成的二维码保存到手机相册

UniApp中保存uv-ui二维码到相册的完整解决方案:通过ref获取组件实例调用toTempFilePath方法,关键处理可能返回的Base64数据(需用getFileSystemManager转换为临时文件路径),再调用saveImageToPhotosAlbum保存,同时处理权限拒绝情况。H5端需特殊处理,通过创建a标签实现下载。该方案解决了Base64转换、权限引导等常见问题,提供跨平台兼容的"保姆级"实现指南。

2026-02-10 23:08:36 474

原创 抛弃 ESLint + Prettier?基于 Biome + Husky 的下一代前端工程化实践

本文介绍如何用Biome替代ESLint+Prettier搭建现代化代码规范体系。Biome基于Rust开发,集代码格式化和检查于一体,比Prettier快35倍,配置简单。通过三步配置:1)安装Biome+Husky+lint-staged;2)初始化Biome配置文件;3)设置Husky预提交钩子。核心命令biome check --apply能自动格式化代码、检查错误并优化import语句。相比传统方案,Biome更快速、配置更简单,虽然规则生态不如ESLint丰富,但对大多数开发场景已足够,是追求开

2026-01-31 23:54:00 990

原创 Nuxt.js中集成DaisyUI

#今天尝试使用Daisy时发现,因Nuxt官方的@nuxtjs/tailwindcss模块,我们不需要手动创建这些配置文件TailwindCss,因为Nuxt自动处理了Tailwind的集成##而当添加DaisyUI这样的插件时,需要添加额外的这些文件。

2025-05-28 16:42:02 402

原创 npm与pnpm--为什么推荐pnpm

通过硬链接(文件指针)指向存储仓库中的文件,避免重复下载。从 npm 迁移到 pnpm 通常是无缝的,只需删除。→ pnpm 只下载一次,两个项目共享同一份文件。可以看见 pnpm和npm几乎一样的 0成本搬迁。→ npm 会分别安装两次,占用双倍空间。,如果多个包依赖同一个库(如。,所有项目共享同一份依赖文件。例如:A 包和 B 包都依赖。项目依赖了“幽灵依赖”(未在。把依赖包全部下载到项目的。),可能会重复存储多份。声明但被直接引用)。)可能需要调整配置。

2025-05-18 10:38:53 788

原创 Nginx部署spa单页面的小bug

我遇到的最大的bug是进入后只有首页正常显示 其他页面全是404,于是问问问才知道,需要这个。没部署过,都是给后端干的,自己尝试部署了一个下午终于成功了。让进入非index的页面能返回主页执行js的路由跳转配置。

2025-04-13 20:05:03 457 1

原创 如何实现元素随滚动平滑上升

相比大家没少见过这个的效果:作为视觉效果是很不错的 同时实现也很简单,本质是封装一个Vue指令。

2025-04-13 18:47:18 474 1

原创 页面简单传参

简单的情景:你需要在帖子主页传递参数给帖子详情页面,携带在主页获得的帖子ID。你有以下几种传递方法##使用Vue3 + TS#

2025-04-04 16:55:46 441

原创 keep-alive缓存

keep-alive缓存动态路由的使用指南#

2025-04-03 14:46:22 853

原创 Pinia持久化插件pinia-plugin-persistedstate

如何让pinia存放的东西不丢失?你还在为页面刷新而丢失数据,多次调用接口而苦恼吗?你还在为localstore一个一个存感到繁琐吗?请使用这款pinia-plugin-oersistedstate全自动持久化插件。3,在store中启用持久化。2,在main.ts中配置。即使切换页面或刷新浏览器,

2025-04-02 20:52:56 963

原创 Vue Transition组件类名+TailwindCSS

本文教学结合TailwindCSS实现一个Transition动画的例子#

2025-04-01 20:23:46 1010

原创 前端如何导入谷歌字体库

Googles Fonts下面的filters可以筛选文字,字体库同族字体会支持不同的语言,如果不确定是否支持自己想要的多语言,可以在筛选栏中打入多国语言,对照右侧字体是否正常显示即可。这里会存在所有你点击来过的字体,后续的引用也会全部引入,如果不想引入,需在此删除。#谷歌字体库内容丰富,涵盖上千种多语言支持的字体,学习导入谷歌字体库来增加网站的阅读性,是必不可少的一项技能#3,进去后 点击右上角的Get font按钮。6,然后在你的主css中定义全局字体族即可。4,点击会进入自己的字体库。

2025-04-01 17:51:05 700

原创 ReCaptcha集成人机验证教学(Vue3篇)

完全隐形,返回用户风险评分(0.0-1.0),由后端根据评分决定是否允许操作。:自动在后台触发(例如表单提交时),仅可疑流量需交互。剩下的交给后端就行了,你就复杂拿到token带给他。需无感分析流量风险(如API调用)→ v3。需要用户交互(如登录表单)→ v2。注册站点,选择版本(v2/v3)。:确保注册时填写正确的域名(如。:用户点击复选框完成验证。本文使用V2显性复选框。

2025-03-31 12:25:11 1756

原创 Pinia的安装,使用,与情景教学

本文基于Vue3和ts去实现Pinia的使用与安装,Pinia用法为组合式API,情景教学为一个基于全局的举报框的pinia逻辑#

2025-03-30 22:26:21 531

原创 如何封装一个上传文件组件

startsWith()用于。

2025-03-29 23:14:38 890

原创 Vue-admin-template安装教程

该项目环境需要node17及以下,如果npm install这一步报错可能是这个原因成功跑起来后访问端口即可如果npm install这一步初始化失败,报错python,可以去下载一个3.7以上的python,安装时务必勾选添加到路径,这样就大概率解决问题了。

2025-03-25 20:38:09 440

原创 TailwindCSS安装教程(PostCSS)

本文为TailwindCSS3.4版本安装教程。

2025-03-25 20:28:41 1903 2

原创 SEO优化小总结

1,Title 属性:head中设置的标题属性,对目标关键词的重要补充,能提高搜索排名,不超过80字,关键词总数不超过五个 xx-xxx-xxx-xxx-xx,控制在三个以内。2,description:描述内容符合标题,辅助关键词排名,字符建议控制在200字符内。3,keywords:面向搜索引擎的关键词,不超过100字符,不超过五个核心关键词。

2025-03-23 16:53:06 306

原创 前端安全之DOMPurify基础使用

DOMPurify时一款专门用于防御XSS攻击的库,通过净化HTML的内容,移除恶意脚本,同时保留安全的HTML标签和数学。以下是基础使用指南,涵盖基础的安装与用法。 常常设置在表单的提交中,或者需要根据用户改变html内容的时候,净化字符串,放置隐藏恶意脚本 效果举例:3,进阶用法配置config,允许或禁止特定的标签或者属性跳过净化 自定义钩子函数在净化过程中插入自定义逻辑:4. 处理特殊场景允许 SVG 内容默认情况下,DOMPurify 会移除 SVG 中

2025-03-17 15:23:48 5696

原创 Tailwindcss开启黑夜模式

3,进入网页前,记忆用户选择的模式,在index.html中写入函数,使其在页面渲染前执行,如果localstorage已经存放了dark 代表开启暗夜模式 如果没有 则不执行。tailwindcss自带的暗夜切换会比css自带的theme主体切换来得方便很多,学习成本也很低,只要求会用tailiwndcss。1,tailwindcss.config有两种暗夜模式切换,媒体查询和手动类切换。手动控制需要开启类模式。切换后 将是否有dark类 存放在localstorage中,保持记忆性。

2025-03-15 13:52:12 556

原创 前端PayPal支付按钮集成(Vue3)

第三方接入PayPal集成Vue3前端typescript实现

2025-03-13 19:17:28 1063

原创 vue3实现虚拟滚动Vue-Virtual-Scroller

Arr是自定义的比如一个对象数组,至少含有id,min-item-size是最小的高度默认px单位,key-field会读取posts中的id,列表的长度由posts长度决定,行内style的两个样式是必须有的,高度代表视窗高度,然后设置overscroll-scroll才能滚动,其他属性就没必要管了,不用去看官方又臭又长的文档。2,main.ts中配置导入。

2025-03-12 19:12:41 2120 1

原创 Vue-Virtual-Scroller虚拟滚动

Arr是自定义的比如一个对象数组,至少含有id,min-item-size是最小的高度默认px单位,key-field会读取posts中的id,列表的长度由posts长度决定,行内style的两个样式是必须有的,高度代表视窗高度,然后设置overscroll-scroll才能滚动,其他属性就没必要管了,不用去看官方又臭又长的文档。2,main.ts中配置导入。

2025-03-12 18:58:50 1030

原创 Vue3接入谷歌邮箱登录功能

谷歌邮箱登录的第三方接入:前端Vue3篇

2025-03-11 19:01:50 1121 1

原创 Nginx部署spa单页面的小bug

我遇到的最大的bug是进入后只有首页正常显示 其他页面全是404,于是问问问才知道,需要这个。没部署过,都是给后端干的,自己尝试部署了一个下午终于成功了。让进入非index的页面能返回主页执行js的路由跳转配置。

2025-03-05 09:14:53 304

原创 vue-i18n国际化插件安装教程(Vue3篇)

i18n是一个国际化语言插件,意译为internationalization的缩写,代表头尾字母加上十八个字母。

2025-02-23 10:57:20 1038

原创 Ts+Vue3+Vite如何配置@路径

由vite创造的ts加vue3会有三个ts.json文件 因此不需要include其他路劲,4.如果报错了可能是没下Node.js的类型声明包。2,修改src下的vite-env.d.ts。3,配置vite.config。

2025-02-20 12:43:09 877

原创 vue3+ts+vite创造路由

4,在你的组件中,可以使用 <router-link> 和 <router-view> 来实现路由导航和显示。1,在 Vue 3 + TypeScript 项目中配置路由,可以使用 Vue Router 4。2,在你的项目中创建一个路由配置文件,例如 src/router/index.ts。3,在你的主应用文件中(通常是 src/main.ts),引入并使用路由。今天第一次用ts 搞了半天。

2025-02-20 12:36:12 331

原创 Vue3+Vite创造路由

需要配注意使用 Vite 的环境变量,在 Vite 中,环境变量需要以 VITE_ 前缀命名。webpack和vite的vue-router添加路由有所不同,小编踩坑了。然后创建src/router/index.js。1,先下载vue-router。2,配置vue-router。

2025-02-19 19:04:39 454

原创 TailwindCss的vue3安装使用

在根目录的index.html引用link生成的output.css。这样就能使用tailwindcss了。在终端运行tailwind CIL。npm下载tailwindcss。npx初始化tailwind配置。

2025-02-17 09:34:23 724

原创 pnpm和npm安装TailwindCss

npm和pnpm安装tailwindCss

2025-02-16 21:26:39 1459

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除