- 博客(87)
- 收藏
- 关注
原创 Git SSH 密钥配置指南
SSH密钥配置指南(2025更新) 摘要:本文详细介绍了SSH密钥的配置流程与最佳实践。主要内容包括:1)SSH密钥的三大优势:免密登录、安全验证和多平台支持;2)六步配置流程:检查现有密钥、生成新密钥、启动代理、添加密钥、绑定公钥平台及验证连接;3)高级技巧:多账户管理和密钥持久化配置;4)常见问题解决方案和四项安全建议(定期更换密钥、分平台使用不同密钥等)。特别推荐使用ED25519算法生成密钥,并提供了Windows/macOS/Linux系统的具体操作命令。
2025-04-02 10:58:13
11120
原创 新人Git实操笔记:从dev分支创建新分支并推送到远程
梳理下来,从dev分支创建新分支并推送到远程的核心步骤其实很简单,记住这三步就行:准备工作:切换到dev分支并拉取最新代码(git checkout dev && git pull origin dev);创建分支:用git checkout -b 新分支名创建并切换到新分支;推送分支:用git push -u origin 新分支名推送到远程并建立关联。执行完这三步,新分支就会出现在远程仓库中,后续开发时直接在新分支上写代码,提交、推送都不用再额外指定远程和分支名,特别方便。
2025-12-23 17:04:48
866
原创 window.postMessage
window.postMessage 是前端跨源通信的核心方案,核心优势在于支持任意跨源窗口/框架的双向通信,且兼容性良好。使用时需重点关注安全问题:严格限制 targetOrigin、接收消息时验证 origin 和消息格式,避免恶意攻击。常见应用场景包括跨标签页弹窗通信、iframe 父子页面通信,复杂场景可通过多层转发实现通信。对于 IE8/9 等低版本浏览器,需将消息转为字符串格式传递。
2025-12-22 17:49:04
735
原创 WebView
原生应用可通过 WebView 的 API 对其行为进行精细化控制,常见配置包括:权限控制:允许/禁止 JavaScript 执行、允许/禁止跨域请求、控制网页存储(LocalStorage、SessionStorage、IndexedDB)的使用。导航控制:监听网页跳转(如拦截 URL 实现自定义路由)、前进/后退/刷新网页、清除缓存(页面缓存、Cookie、WebStorage 等)。界面控制:隐藏/显示滚动条、设置网页缩放比例、支持手势缩放、自定义进度条显示加载状态。
2025-12-22 17:43:29
862
原创 UniApp APP 端跳转三方页面后返回 APP 的实现原理与实操解析
整套方案的核心是以web-view为容器、以为通信桥、以桥接脚本为跨端适配层APP 端向三方 H5 传递初始化参数;三方 H5 完成业务后向 APP 发送回调数据;APP 端接收数据后销毁web-view,返回内部页面。这种设计既遵循了 UniApp 的官方通信规范,又解决了跨端兼容、数据安全、用户体验等核心问题,是 APP 端跳转三方页面并返回的标准化实现方案。!if(!v=g?e({uvue:!0}):o()?e({nvue:!e({plus:!0}):e({h5:!M++);
2025-12-17 17:22:28
974
原创 uniapp开发APP 内嵌外部 HTTPS 链接的实现方案
UniApp开发中内嵌HTTPS外部链接时,常因特殊字符解析导致400101等错误。本文提出"编码传递-解码加载"方案:跳转前用encodeURIComponent对完整链接编码,WebView页面仅需解码还原原始链接。关键点包括移除冗余参数拼接、配置域名白名单、增加异常兜底处理,并实现APP与H5的双向通信。该方案有效解决了链接截断和参数丢失问题,适用于实名认证、第三方签约等需要稳定加载外部链接的场景。
2025-12-17 11:16:01
576
原创 Git 回退神技:用ID一键“穿越”到旧版本
Git版本回退实用指南:通过提交ID精准回退代码版本。提交ID是每个版本的唯一标识,只需记住前7位即可定位。
2025-12-16 18:11:11
571
原创 Git 强制推送:别手滑把同事代码“一键清空”!
摘要:强制推送(git push -f)是Git中的高风险操作,会直接覆盖远程代码,相当于"手机覆盖原文件"的升级版。它主要用于修改历史提交、清理敏感信息或更新个人分支等场景。安全做法是使用带检查的--force-with-lease,避免误删同事代码。三大禁忌:1)禁止强制推送主分支;2)协作分支需提前沟通;3)推送前必须拉取最新代码。误操作后可通过git reflog找回历史提交。强制推送如同"剁骨刀",是特殊救急工具而非常规手段,使用时务必谨慎。
2025-12-16 18:05:24
954
原创 git commit 的提交如何撤销
Git撤销commit操作指南:根据提交是否推送到远程仓库,提供不同解决方案。本地未推送的提交可通过--amend修改信息,--soft或--hard参数灵活撤销提交;已推送的提交建议使用revert安全撤销。误删可用reflog找回30天内记录。核心原则:未推送可自由修改,已推送必须用revert保证团队协作安全。附操作速查表,覆盖常见场景,兼顾灵活性与安全性。
2025-12-16 16:57:52
902
原创 UniApp实现刷新当前页面
本文总结了UniApp中刷新当前页面的多种实现方案及适用场景。主要介绍了五种方法:1)使用uni.reLaunch全平台通用的基础方案;2)保留页面栈的uni.redirectTo方案;3)针对TabBar页面的switchTab+页面通信方案;4)性能最优的直接调用页面实例方法方案;5)H5专属的window.location.reload方案。文章对比了各方案的兼容性、页面栈影响和适用场景,并给出了选型建议:优先选择直接调用方法实现无跳转刷新,特殊场景考虑跳转方案,H5端可简化处理
2025-12-11 16:13:06
1247
原创 PHP新手入门超详细教程(小白一看就懂)
摘要:本文系统介绍PHP开发知识体系,涵盖基础语法、Web开发、数据库交互、框架应用、安全优化及实战项目。从环境搭建和语法基础开始,逐步深入HTTP协议、模板引擎、MySQL/ORM使用,解析Laravel等主流框架特性。重点讲解安全防护(XSS/CSRF防御)和性能优化技巧,并提供博客系统、电商平台等实战案例。最后推荐官方文档和Swoole异步编程等进阶方向,形成完整的PHP开发学习路径
2025-12-10 14:26:52
284
原创 JavaScript 函数完全解析(文章版)
本文全面解析JavaScript函数的核心概念与应用。从基础定义入手,介绍了四种函数定义方式(声明式、表达式、箭头函数、构造函数)及其适用场景。深入剖析了函数提升、参数特性(默认参数、剩余参数)、作用域与闭包、this指向等核心特性。进阶部分涵盖高阶函数、递归和异步函数等实用技巧,并给出函数设计原则和常见避坑指南。文章强调函数作为JS"第一等公民"的价值,包括代码复用、逻辑封装和模块化开发,为开发者提供了从基础到实战的系统学习路径。掌握这些内容将显著提升JS代码的质量和可维护性。
2025-12-08 11:58:03
793
原创 JS 中 try-catch 异常处理机制(结合 async/await 详解)
本文深入解析JavaScript中try-catch机制的四大维度:基础机制、同步异常处理、异步异常适配及常见误区。try-catch通过"捕获-处理"逻辑防止程序崩溃,finally块确保资源释放。
2025-12-08 11:54:20
663
原创 详解JS async/await与同步异步问题
本文深入浅出地讲解了JavaScript中async/await的工作原理和使用方法。通过"买奶茶"的生活场景类比,解释了同步与异步的区别:同步会阻塞线程,而异步通过回调实现非阻塞。文章指出早期回调函数会导致"回调地狱",而async/await作为Promise的语法糖,能让异步代码像同步一样清晰易读。核心规则包括:async函数自动返回Promise,await用于暂停执行直到Promise完成。
2025-12-08 11:49:59
689
原创 前端页面跳转的核心区别与实战指南
本文对比了前端开发中两种页面跳转技术:location.href和window.open()。location.href通过修改当前窗口URL实现跳转,适用于登录重定向等场景;window.open()则创建新窗口加载内容,适合需要保留原页面的场景。二者在跳转载体、历史记录、控制能力等方面存在显著差异:location.href操作简单但功能有限,window.open()配置灵活但易被拦截。
2025-12-08 11:42:56
1554
原创 微信 H5 环境检测逻辑
摘要:微信H5开发需通过navigator.userAgent检测运行环境,正则匹配"micromessenger"字段判断是否为微信浏览器。检测结果用于控制微信专属接口调用,需注意兼容性、小程序区分及执行时机等边界情况,确保在微信环境下才执行分享、支付等微信特有功能,避免非微信环境下的代码错误。该方法简单有效,但需结合其他特征区分小程序环境,并做好异常处理。
2025-12-08 09:43:49
303
原创 彻底搞懂 JavaScript 深拷贝与浅拷贝:原理、实现与最佳实践
浅拷贝是指:创建一个新对象,拷贝原对象的「第一层属性」——若第一层属性是基本类型,拷贝的是值本身;若第一层属性是引用类型,拷贝的是引用地址(新旧对象共享该层引用类型数据)。简单来说:浅拷贝只 “拷贝一层”,深层引用类型仍共享。深拷贝是指:创建一个全新的对象,递归拷贝原对象的「所有层级属性」——无论多少层嵌套的引用类型,都会创建新的内存空间存储;新旧对象完全独立,修改新对象不会影响原对象。场景推荐方案基本类型拷贝直接赋值(无需深浅拷贝)单层对象 / 数组拷贝扩展运算符(...)/
2025-12-05 11:18:20
623
原创 深入理解浏览器重绘与回流:前端性能优化的核心
本文深入解析前端性能优化的核心问题——重绘与回流。首先介绍浏览器渲染流程,指出回流对应布局阶段,重绘对应绘制阶段,且回流必然触发重绘。然后详细分析两者的触发场景:回流由几何属性或DOM结构变化引起,重绘由视觉样式改变引起。文章重点提供多种优化策略:批量修改DOM与样式、避免频繁读取回流属性、使用transform和will-change优化动画性能、优化布局结构等。最后推荐使用Chrome DevTools检测性能问题,并澄清常见误区。通过理解这些原理和优化方法,开发者可以显著提升页面性能,特别是在高频操作
2025-12-05 11:15:51
794
原创 JavaScript 数据存储方法全解析:从基础到进阶
JavaScript 存储方案从基础的内存变量到复杂的 IndexedDB,覆盖了临时、持久、小型、大型等不同场景的需求。选择方案时需重点关注:数据生命周期、容量、读写性能、是否需服务端交互、安全性等维度。实际开发中,建议结合场景封装通用存储工具类,降低使用成本,同时遵循安全最佳实践,保障数据安全。
2025-12-05 11:13:01
494
原创 深度解析:for 循环与 forEach/map 的核心区别及应用场景
本文深入解析JavaScript中for循环、forEach和map三种数组遍历方式的本质差异。从语法结构看,for循环是原生语句,支持灵活控制流程;forEach和map是数组方法,封装遍历逻辑。核心区别在于:map返回新数组(纯函数特性),而for/forEach无返回值;for支持break/continue,另两者仅能跳过当前迭代;for兼容异步操作,forEach/map无法等待异步。性能上for循环最优,但日常开发差异可忽略。适用场景建议:复杂逻辑/异步用for循环,简单操作用forEach
2025-12-05 09:24:48
1057
原创 H5 跳转方式
摘要:H5开发中,window.open('_blank')和location.href是两种不同的页面跳转方式。前者在新标签页打开链接,保留原页面状态,适合外部链接;后者直接替换当前页面,适合内部跳转。关键区别在于:页面独立性、浏览器限制、移动端适配和用户体验。最佳实践包括:使用noopener安全属性、避免异步调用window.open、移动端优先使用location.href。选择时应根据场景需求,权衡页面保留与跳转稳定性。
2025-12-05 09:22:59
529
原创 ES6(ECMAScript 2015)基本语法全解析
ES6(ECMAScript2015)是JavaScript的重大更新,引入了多项革命性特性。主要包括:let/const声明解决变量提升问题;解构赋值简化对象/数组操作;模板字符串支持多行文本和变量插值;箭头函数提供简洁语法;函数参数支持默认值和剩余参数;对象扩展允许属性简写;类语法实现面向对象编程;模块化支持导入导出;Promise处理异步操作;迭代器/生成器提供遍历控制;新增Set/Map数据结构;数组/字符串扩展实用方法。这些特性显著提升了代码可读性、可维护性和开发效率,是现代前端开发的基础。
2025-12-04 10:12:50
317
原创 Tree Shaking 深度解析:原理、应用与实践
TreeShaking(摇树优化)是一种前端打包优化技术,通过静态分析ES6模块的导入导出关系,移除未使用的代码以减少打包体积。其核心原理是利用ES6模块的静态特性进行死代码消除,要求代码必须使用import/export语法且标记无副作用模块。在Webpack等工具中需配置生产模式并声明sideEffects字段。优化时建议采用命名导出、避免副作用代码,并与代码分割、压缩混淆等技术结合使用。该技术对第三方库(如Lodash的ES模块版本)优化效果显著,但受限于动态导入和副作用代码的不可优化性。
2025-12-04 10:11:00
976
原创 Vue3 中 ref 与 reactive 的深度解析与对比
ref和reactiveref:更灵活,支持基本类型和对象,适合独立值和需要重新赋值的场景reactive:更适合复杂对象和集合类型,提供更自然的访问方式理解二者的差异和适用场景,能帮助开发者更高效地构建 Vue3 应用,避免常见陷阱,编写出更清晰、可维护的响应式代码。
2025-12-04 10:10:02
632
原创 TS 与 JS 核心差异深度解析
本文对比了TypeScript与JavaScript的核心差异和应用场景。TypeScript作为JavaScript的超集,通过引入静态类型系统,在编译阶段即可发现类型错误,显著提升代码质量和开发体验。文章从类型系统、语言特性、开发流程等维度展开分析:JavaScript采用动态类型,灵活但易出错;TypeScript支持类型注解、接口、泛型等高级特性,提供更好的代码提示和重构能力。两者适用场景不同,TypeScript更适合大型项目,而JavaScript在小型项目和快速原型开发中更具优势。TypeSc
2025-12-04 10:09:14
436
原创 Vue2 与 Vue3 核心差异深度解析
本文深入对比Vue2与Vue3的核心差异。Vue3采用模块化架构,基于Proxy重构响应式系统,解决了Vue2中Object.defineProperty的局限,并引入组合式API替代选项式API,使逻辑组织更灵活。性能方面,Vue3通过虚拟DOM优化、静态提升和树形结构打平等技术大幅提升渲染效率,同时原生支持TypeScript并减小40%核心体积。建议新项目直接使用Vue3,现有项目可通过@vue/compat渐进迁移。Vue3在保持易用性的同时,为开发者提供了更强大、高效的开发体验。
2025-12-04 10:07:54
754
原创 详解 console.log:前端调试与开发的核心工具
本文全面介绍了前端开发中console.log()的调试技巧。基础用法包括输出字符串、数字、对象等数据;进阶技巧涵盖格式化输出、分组展示和性能计时;还介绍了console.error()、console.table()等替代方法。文章总结了console.log在代码追踪和BUG定位中的实际应用,并给出避免生产环境残留等最佳实践。同时指出其局限性,建议结合浏览器DevTools和第三方日志库提升调试效率。通过系统掌握这些技巧,开发者可以更高效地利用控制台进行调试。
2025-12-03 14:25:14
352
原创 详解 HTML Image 的 mode 属性:图像显示模式的灵活控制
本文系统解析前端开发中image标签的mode属性,重点介绍其在跨端框架中的应用。mode属性通过定义图片缩放和裁剪规则,解决图片与容器尺寸不匹配的问题。文章详细分析了scaleToFill、aspectFit、aspectFill等常见取值的特性及适用场景,并与CSS原生属性object-fit进行对应关系说明。同时提供了轮播图、商品列表等实际应用示例,并指出使用时的注意事项,包括容器尺寸明确、框架兼容性等。最后强调掌握mode属性能帮助开发者在不同场景下精准控制图片显示效果。
2025-12-03 14:23:51
541
原创 CSS position 属性
CSS position属性是控制元素定位方式的核心工具,提供static(默认)、relative、absolute、fixed和sticky五种定位模式。static遵循文档流,relative基于自身位置偏移但不脱离文档流,absolute相对于最近定位祖先定位并脱离文档流,fixed相对于视口固定定位,sticky则结合relative和fixed特性实现粘性效果。定位元素可通过z-index控制层叠顺序,且不同定位方式会影响文档流布局。合理运用这些定位方式能实现弹窗居中、固定导航等常见布局效果
2025-12-03 14:22:25
923
原创 uniapp通用递进式步骤组件
本文介绍了一个通用递进步骤组件的实现原理,包含状态管理、规则校验和视图联动三层架构。核心功能包括:1) 使用响应式数据管理步骤状态(完成标记和当前步骤);2) 通过前置校验确保"必须完成上一步才能进入下一步"的递进规则;3) 动态绑定导航样式和条件渲染内容区域。组件采用插槽机制实现业务内容与递进逻辑的解耦,父组件只需提供步骤内容并调用暴露的方法即可完成流程推进。该设计既保证了流程的严谨性,又支持内容的灵活定制,实现了高复用性。
2025-12-03 13:59:19
926
原创 uniapp通用单张图片上传组件
本文详细介绍了基于uni-app框架开发通用单张图片上传组件的实践方案。组件采用模块化设计,包含上传占位区、图片预览区和交互反馈区三大核心模块。重点实现了图片选择上传流程、服务器接口对接以及预览删除功能,通过uni.uploadFile API完成文件传输,并提供了完善的错误处理和用户反馈机制。组件设计注重通用性和扩展性,支持样式定制和功能扩展,适用于各类移动端图片上传场景。文章还分享了组件布局设计、交互优化等最佳实践,为移动应用开发提供了可复用的图片上传解决方案。
2025-12-03 13:50:04
590
原创 自定义展示行数
通过设置rows限制展示行数。rows="3"expand-text="展开"collapse-text="收起"/>setup() {'那一天我二十一岁,在我一生的黄金时代。我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云。后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消失,最后变得像挨了锤的牛一样。可是我过二十一岁生日时没有预见到这一点。我觉得自己会永远生猛下去,什么也锤不了我。},
2025-12-01 09:50:14
346
原创 [Violation] Added non-passive event listener to a scroll-blocking ‘touchmove‘ event. Consider markin
这个警告是因为在touchmove事件监听中没有使用选项,导致浏览器无法优化滚动性能。
2025-12-01 09:43:42
294
原创 uniapp滚动容器冲突
场景解决方案返回位置生效保留原生页面滚动(不设置100vh),用navigateTo跳转,或手动记录滚动位置。弹框不触发滚动顶部弹框打开时锁定页面滚动(),关闭时恢复。必须用自定义滚动容器手动管理自定义容器的滚动位置,弹框时锁定容器滚动。这种方案既保留了返回位置功能,又解决了弹框导致的滚动异常,兼容 uni-app 各端(H5 / 小程序 / APP)
2025-11-29 18:10:49
467
原创 微信SDK分享
摘要:该代码实现了微信公众号的分享功能初始化。通过调用微信JS-SDK接口,配置分享到朋友圈和好友的标题、描述、链接及图标。首先获取当前页面URL并请求签名数据,然后初始化wx.config配置。在wx.ready回调中设置updateAppMessageShareData和updateTimelineShareData分享参数。页面加载时检测微信环境,通过WeixinJSBridgeReady事件或直接初始化分享功能。包含错误处理机制,会捕获并输出配置失败信息。整个过程确保了分享内容与公众号安全域名一致。
2025-11-27 10:23:30
93
原创 弃用微信分享SDK,巧用默认机制实现自定义分享效果(邪修方案)
摘要:本文介绍了一种巧妙利用微信默认规则实现网页分享功能的"邪修"方案。通过配置OG标签(开放图谱协议)替代复杂的微信JS-SDK,开发者可以精准定义分享内容。核心操作包括:在HTML头部配置完整的OG标签体系,以及通过JavaScript动态处理分享数据和URL参数。该方案代码轻量、兼容性强,稳定性优于传统SDK方案,特别适合动态页面需求。关键点在于微信会优先识别OG标签信息,仅当OG标签缺失时才会降级使用页面默认内容。
2025-11-27 10:20:59
557
原创 van-tabs 的标题省略号显示差异
Vant的van-tabs组件在不同平台(安卓/iOS/H5)显示标题省略号存在差异,主要因各平台对text-overflow:ellipsis的渲染机制不同。解决方案:1)通过:ellipsis="false"关闭省略功能;2)添加CSS样式(white-space:normal等)确保换行;3)可设置max-width控制标题宽度。建议统一处理以获得一致体验,避免依赖平台差异。该问题源于浏览器默认文本处理方式差异,通过明确样式设置即可解决跨平台显示不一致的问题。
2025-11-18 14:19:32
267
原创 IOS不兼容gap如何处理
文章摘要:针对iOS不兼容gap属性的问题,提出通过父容器负边距抵消子元素边距的解决方案。核心原理是利用父容器的负margin(Grid为-gap/2,Flex为-gap)与子元素的padding/margin相互抵消,实现与gap相同的间距效果。
2025-11-17 19:02:06
1064
空空如也
van-tabs scrollspy
2025-11-25
uview-plus up-tabs 滚动导航
2025-08-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅