- 博客(97)
- 收藏
- 关注
原创 Android平台云端打包证书使用说明
HbuilderX中开发完成发布为原生App提交云端打包时,在"App云端打包"界面中Android平台需要选择签名证书: 支持以下证书类型: 证书是一个开发者的身份标值,对Android系统而言,使用证书签发的App ,是属于同一个开发者的App 举个极端的例子,如果你的应用证书泄露,那么别人可以用这个证书签名一个仿冒App,加入包名和你的包名也一样,就可以覆盖安装安卓手机你之前的包 当前仅依赖证书校验是不完善的,所以主流的Android应用市场,通过实名认证开发者信息和著作权,强化了App的唯一性,
2026-05-21 11:14:24
302
原创 Java学习(一)
JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域,负责执行指令,,管理数据,内存,寄存器,包含在JDK中对于不同的平台,有不同的虚拟机java虚拟机机制屏蔽了底层运行平台的差别,实现了"一次编译,到处运行"1. JDK 的全称 Java decelopment KIt java开发工具包,JDK=JRE+java开发工具 [java,javac,javadoc,javap等] 2. JDK 是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE,所以安装了JDK,就不用在单独安
2026-05-04 17:46:46
422
原创 企业后台管理系统:OA、CRM、ERP、BPM、WMS 到底是什么?区别在哪?
本文介绍了企业常见的六大管理系统:1.后台管理系统(通用管理平台,负责权限、配置等基础功能);2.OA系统(办公自动化,处理请假、报销等审批流程);3.CRM系统(客户关系管理,管理销售业务全流程);4.ERP系统(企业资源计划,统筹财务、供应链等核心业务);5.BPM系统(业务流程引擎,驱动各类审批流程);6.WMS系统(专业仓储物流管理)。各系统相互配合形成完整业务链路:CRM产生业务→BPM驱动流程→OA完成审批→ERP进行核算。
2026-04-19 15:53:31
197
原创 react学习(一)
本文总结了React核心知识点:1.项目创建方式(Vite/CRA);2.JSX语法规则(表达式、条件渲染、列表渲染);3.组件开发(函数组件、状态管理useState);4.样式控制(行内样式、className动态绑定);5.表单处理(受控/非受控组件);6.实战案例(评论列表功能实现)。重点包括:状态不可变原则、数据驱动视图机制、组件化开发模式,以及通过案例演示了状态管理、事件处理和条件渲染等核心功能。
2026-04-16 15:43:54
416
原创 后台管理系统之系统管理:用户/部门/角色/群组管理
用户管理、部门管理、角色管理、群组管理,虽然各有侧重,但最终目标都是为了实现后台系统的“安全、有序、高效”管理:用户管理管“人”,确保身份合法、操作可追溯;部门管理管“组织”,贴合企业实际管理逻辑;角色管理管“权限模板”,提升权限管理效率;群组管理管“临时协同”,补充角色管理的灵活性。
2026-04-14 18:59:38
564
原创 前端 Vue 虚拟列表(Virtual List),从原理到实战
虚拟列表技术是解决Vue项目中大数据量渲染性能问题的核心方案。传统v-for全量渲染会导致DOM节点爆炸、内存占用过高和滚动卡顿等问题。虚拟列表通过只渲染可视区域元素,配合占位元素模拟完整列表高度,实现海量数据的流畅滚动。 文章详细介绍了虚拟列表的实现原理,包括计算可视范围、按需渲染和模拟总高度三个关键步骤。针对Vue3提供了手写实现代码示例,并推荐使用vue-virtual-scroller这一成熟组件库。该库支持固定高度和动态高度两种场景,提供了滚动控制、懒加载等实用功能。 最佳实践包括:必须设置容器高
2026-03-26 17:36:01
531
原创 前端埋点从0到1:4大实现方式+实操落地+选型指南
这是Vue3 特有的埋点方式,利用Vue3自定义指令(directive), 将埋点逻辑封装成指令,在组件模板中通过v-track指令绑定,实现 "埋点与业务逻辑完全解耦", 适合高频复用的埋点场景(如多个页面的按钮点击,表单提交)核心优势: 一次封装,全局复用;模板中绑定指令即可实现埋点,无需在methods中写埋点代码;完全适配Vue3 组合式API,优雅简洁// src/directives/track.js - Vue3自定义埋点指令// 实例化埋点SDK(与全局注册的SDK配置一致)})
2026-03-23 18:54:27
542
原创 js 插件 Clipboard.js 与原生 Clipboard API 全方位对比
本文对比了前端剪贴板操作的两种实现方案:轻量级插件Clipboard.js和原生Clipboard API。Clipboard.js(3kb)开箱即用,兼容IE11等旧浏览器,适合快速实现复制功能,但功能单一且依赖废弃API。原生Clipboard API支持读写操作,性能更好且面向未来,但仅支持现代浏览器(Chrome 66+等),读取需用户授权。建议根据项目需求选择:优先使用原生API,对兼容性要求高的项目可降级使用Clipboard.js。两种方案都需在用户交互中触发,且需注意HTTPS环境要求。
2026-03-19 16:39:32
438
原创 高德地图自定义点标记: SVG vs HTML+CSS两种方案
地图标记实现方案对比:提供HTML+CSS和SVG两种实现方式。HTML+CSS方案开发快速、修改灵活,适合少量点位(≤100个)且对缩放清晰度要求不高的场景;SVG方案具有矢量特性,缩放无模糊且性能优异,适合大量点位(>100个)或需要长期维护的场景。文章详细介绍了两种方案的具体实现代码,并针对SVG在高分屏下的模糊问题提出了优化方案:通过按设备像素比放大SVG画布,同时保持显示尺寸不变,配合几何精度渲染、去除滤镜等措施,显著提升了在高分屏下的显示清晰度。
2026-03-18 15:29:42
300
原创 微信小程序静默登录踩坑:首页接口比登录接口快?4种方案完美解决
摘要:微信小程序中app.vue的onLaunch和首页onLoad并行执行导致登录接口未完成时首页接口已请求失败。提供四种解决方案:1)首页延迟请求(简单项目);2)使用Promise等待登录完成(推荐);3)uni-app Vue3专属全局Promise方案;4)全局拦截器+状态管理(中大型项目)。方案3通过main.js挂载全局Promise,在app.vue触发resolve,首页onLoad等待Promise完成,确保登录态有效。方案4通过拦截器统一管理请求,最适合多页面项目。各方案适应不同场景,
2026-03-17 18:56:07
437
原创 前后端通信核心方案:轮询、WebSocket、SSE
本文介绍了前后端通信的三种核心方案:轮询、WebSocket和SSE。轮询通过定时请求实现简单通信但效率低;WebSocket支持全双工实时通信,适合高频交互场景;SSE仅支持后端单向推送,实现简单且资源消耗低。文章从实时性、通信方向、兼容性等维度对比了三种方案,建议根据业务需求选择:双向高实时用WebSocket,单向推送用SSE,简单需求用轮询。同时提醒需注意连接管理、异常处理等关键问题。
2026-03-16 19:45:24
481
原创 前端跨页面通信:8 种方案全解析(附实战案例)
本文系统梳理了8种主流的前端跨页面通信方案,涵盖LocalStorage、BroadcastChannel、SharedWorker、Cookie、window.open、IndexedDB、ServiceWorker和URL Hash等技术。文章详细分析了每种方案的实现原理、使用场景、实战案例和优劣势对比,为不同业务需求提供技术选型参考。其中BroadcastChannel因其原生支持、实时性好被列为首选方案,LocalStorage+storage事件作为兼容性兜底方案,SharedWorker和Ind
2026-03-16 16:37:44
565
原创 PDF.js 用法及官方核心API详解
摘要:本文介绍了PDF.js这一纯前端PDF解析渲染工具,其核心作用是在现代Web浏览器中转换并显示PDF文件,无需依赖外部插件。文中概述了其核心功能,讲解了基础使用方法及常见错误解决办法,重点拆解了官方核心API(含顶层入口、核心类的成员与方法),并补充了常用配置参数及分页预览、文本提取等实战代码,为开发者快速上手PDF.js、实现各类PDF操作提供清晰指引和可复用示例。一. PDF.js 是什么PDF.js 是一个js库,可以在现代Web浏览器中渲染和显示PDF文件,它的主要作用是将PDF文件转换
2026-03-12 17:25:28
731
原创 uniapp token过期的几种常见处理方案
本文探讨了UniApp中处理Token过期的解决方案。Token过期会导致401错误,影响用户体验。文章提出五种方案:1)基础版被动刷新;2)双Token无感刷新机制(AccessToken+RefreshToken);3)前端主动预刷新;4)单Token后端延长有效期;5)懒人方案。重点介绍了双Token机制,通过Pinia管理Token状态、HTTP拦截器自动添加Token、请求队列处理并发401错误等技术实现无感刷新,保证用户在Token过期时仍能流畅使用应用。不同方案适用于不同项目规模和安全需求。
2026-03-06 17:39:26
584
原创 深入理解 Vue 中的 $attrs 与 $listeners:从原理到组件封装实践
摘要:本文深入解析Vue中$attrs和$listeners在组件二次封装中的应用。$attrs存储父组件传递但未声明的属性(class/style除外),Vue3将$listeners整合到$attrs中,简化透传逻辑。通过封装el-dialog的实战案例,展示了如何利用v-bind="$attrs"实现属性和事件透传,既保留原生组件灵活性,又能统一业务逻辑。文章对比Vue2/Vue3差异,强调最佳实践:核心Props/Events需声明,非核心配置通过$attrs透传,实现封装与灵活
2026-03-04 17:39:22
418
原创 前端检查内存泄露
前端内存泄漏检测与解决方法 前端内存泄漏会导致页面性能下降甚至崩溃,常见于SPA应用。主要泄漏场景包括:意外的全局变量、滥用闭包、未清理的DOM引用、未销毁的定时器/事件监听、第三方库残留和无限增长的缓存数据。 检测工具主要使用Chrome开发者工具的Memory和Performance面板: 通过Performance录制内存曲线,观察操作后内存是否回落 使用Memory面板的堆快照对比功能,定位未回收对象 利用时间线分配记录观察内存分配过程 典型示例及解决方案: 闭包泄漏:返回的变量被全局引用,应避免长
2026-01-24 22:37:17
1369
原创 前端浏览器缓存深度解析:从原理到实战
本文深入解析浏览器缓存机制,分为强缓存和协商缓存两类。强缓存通过Cache-Control/Expires响应头实现,直接从本地读取资源;协商缓存通过Last-Modified/ETag与服务器交互验证资源更新。缓存配置需由后端/服务器完成,静态资源建议配置强缓存,动态资源使用协商缓存,HTML文件应禁用强缓存作为更新入口。合理运用缓存可显著提升页面加载速度,降低服务器负载。
2026-01-22 18:01:33
633
原创 一文搞懂 SSR 与 SSG:前端渲染优化的两大核心方案
SSR 服务端渲染指: 浏览器发起请求后,服务器先完成页面组件加载,数据请求与组装,生成包含完整DOM结构的HTML页面,再将这份"成品HTML"返回浏览器,浏览器拿到后可直接渲染展示内容,同时加载前端JS完成"客户端激活", 最终将页面转化为可交互的SPA 页面。
2026-01-21 17:55:49
1022
原创 前端必懂:CDN 到底是什么?为什么能加速?如何在项目中正确使用?
CDN(Content Delivery Network),即内容分发网络,是一组分布在不同地理位置的服务器集群,核心作用是将前端静态资源(JS,CSS,图片,视频等)缓存到离用户最近的服务器节点,让用户从"就近节点"获取资源,而非直接从源服务器获取1. CDN 的核心是"就近分发", 前端使用CDN 的核心目标是提升静态资源加载速度,减轻源站压力;2. 第三方库优先用成熟的公共CDN,自有资源需购买CDN服务并配置加速域名;3. 缓存规则和资源哈希值是CDN使用的关键,需避免缓存更新不及时的问题。
2026-01-21 13:31:51
1117
原创 前端大文件上传(切片并发/断点续传/秒传/WebWorker 计算Hash) 含完整代码
大文件上传时前端开发常见需求之一,尤其在处理较大的Excel,高清图片,视频等文件时,优化上传链路不仅能提升用户体验,也能显著降低服务端压力,本文围绕一套工业界常用的方案展开,包含: 直接整文件上传通常会遇到: 因此, 大文件上传通常采用切片上传 + 状态查询+ 合并的方式实现可靠传输整体流程建议这样设计: 1. 前端选择文件==> 生成fileId (hash 或 hash+size)2. 前端向服务器查询上传状态: /upload/status?fileId=...3. 前端切片后跳过已上传切片,并发上
2026-01-18 20:01:24
1149
原创 前端首屏加载时间的度量:FCP、LCP等指标的规范理解
浏览器首次在视口中渲染任意文本,图像(包括背景图), SVG或Canvas的时间点在视口范围内,面积最大的内容元素完成渲染的时间点首屏主图Banner首屏列表主要文本块首屏加载不是浏览器时间,而是体验指标FCP反映首次可见内容LCP是首屏完成时间的最佳近似Load 与 DOMContentLoaded 不适合作为首屏指标。
2026-01-18 15:55:43
919
原创 一文读懂IndexedDB: 前端本地数据库入门与实践
一句话总结:indexedDB 是前端领域真正意义上的"本地数据库"当你遇到以下需求时,请直接考虑它:数据量大结构复杂需要索引和事务需要离线能力。
2026-01-16 21:13:50
749
原创 Vite5 基础篇
Vite是一款基于原生ES模块的前端构建工具,相比Webpack具有显著的开发速度优势。它采用按需编译机制,仅在浏览器请求时处理对应模块,大幅提升大型项目的启动和热更新效率。Vite内置对Vue3、React和TypeScript的支持,配置简洁,但也存在对老旧浏览器兼容性不足的问题。配置方面,Vite提供开发服务器选项(端口、代理等)、生产构建配置(输出目录、代码压缩等)和共享选项(路径别名、CSS预处理等)。通过Rollup实现生产构建,支持自定义输出格式和静态资源分类。插件系统可扩展功能,如自动导入V
2026-01-12 01:29:35
629
原创 Webpack 面试题
Loader负责把不同类型的文件转换成Webpack能处理的模块,而Plugin通过参与Webpack的构建生命周期,扩展和优化整个打包过程。
2026-01-12 00:00:00
999
原创 Webpack5 高级篇(二)
优化代码运行性能打包代码时会将所有js文件打包到一个文件中,体积太大了,我们如果只要渲染首页,就应该只加载首页的js文件,其他文件不应该加载 所以我们需要将打包生成的文件进行代码分割,生成多个js文件,渲染哪个页面就只加载某个js文件,这样的加载的资源就少,速度就更快主要做了两件事代码分割实现方式有不同的方式,为了更加方便体现它们之间的差异,我们会分别创建新的文件来演示5.npx webpack 此时在dist 目录我们能看到输出了两个js文件总结: 配置了几个入口,至少输出几个js文件如果多入口
2026-01-11 18:07:30
733
原创 Webpack5 高级篇(一)
本文介绍了Webpack高级配置的优化方法,主要从四个方面展开:提升开发体验、打包速度、减少代码体积和运行性能。在开发体验方面,推荐使用SourceMap实现源码映射;通过HotModuleReplacement实现热更新;使用OneOf、include/exclude规则优化loader处理流程。在打包速度方面,建议开启缓存(Cache)和多进程打包(Thead)。在代码体积方面,介绍了TreeShaking自动删除未使用代码,使用@babel/plugin-transform-runtime减少辅助代码
2026-01-09 22:56:26
742
原创 Webpack5 基础篇(二)
开发中可能还存在一些其他资源,如音视频 原因是: Webpack对 jc 处理是有限的,只能编译js中ES模块化语法,不能编译其他语法,导致js不能再IE等浏览器运行,所以我们希望做一些兼容性处理其次开发中,团队对代码格式是有严格要求的,我们不能由肉眼去检测代码格式,需要使用专业的工具来检测. 可组装的 js和JSX检查工具这计划意思就是: 它是用来检测js和jsx语法的工具,可以配置各项功能 我们使用Eslint,关键是写Eslint配置文件,里面写上各种rules规则,将来运行Eslint时就会以写的规
2026-01-06 15:19:20
809
原创 Webpack5 基础篇(一)
Webpack 本身功能是有限的:开发模式: 仅能编辑 JS中的ES Module语法生产模式: 能编译JS中的ES Module 语法, 还能压缩JS代码开始使用这个模式我们主要做两件事css - loader : 负责将Css文件编译成Webpack能识别的模块style-loader : 会动态创建一个Style标签,里面放置Webpack中Css模块内容,此时样式就会以Style标签的形式在页面上生效sass-loader : 负责将Sass 文件编译成css文件。
2026-01-06 12:20:24
765
原创 前端竞态问题
前端静态问题本质上是"多个异步任务竞争同一份状态",最终 UI 或数据结果取决于不可控的返回顺序,典型场景包括搜索联想,接口重复触发,Tab频繁切换,自动保存等,解决静态的核心只有一句话: 只让当前有效请求的结果生效,工程上常用手段主要有三类:防抖 / 节流能控制频率,但它们解决的是 "触发次数", 并不能保证"结果正确",所以不能当做静态的核心解法。
2026-01-04 18:26:05
1332
原创 单点登录(SSO) 是什么? 一篇讲透原理,实现与安全的详细指南
单点登录(SSO)是一种身份认证机制,允许用户一次登录即可访问多个相互信任的系统。其核心是通过统一认证中心(IdP)集中管理身份验证,业务系统只需校验IdP颁发的凭证即可确认用户身份。SSO工作流程包括:用户首次登录IdP后生成凭证,后续访问其他系统时通过共享token或cookie实现无感知登录。优点包括提升用户体验、简化账号管理;缺点可能存在安全隐患。为提高安全性,可采取强制密码策略、多因素认证等措施。SSO广泛应用于企业内网和互联网服务,如微信生态、阿里系产品等。
2026-01-04 11:11:05
1488
原创 uniapp 折叠动画 <transition> 踩坑记录
view v-for="n in [11,12]" :key="n" class="tool-item">功能{{ n }}</view>原因是 在小程序中,父容器是flex时,子元素的max-height变化不会触发布局动画。子元素的max-height不参与flex计算,因此不会引发动画过渡。动画帧直接跳到了最终状态,看起来就是无动画。
2026-01-03 15:30:22
177
原创 uniapp 实现一个底部悬浮面板
本文介绍了微信小程序地图界面与浮动面板交互设计方案。通过三层结构布局:底层地图、中层搜索栏和悬浮按钮、顶层可滚动浮层实现半屏地图展示。核心采用scroll-view包裹透明占位区与工具面板的结构,利用CSS控制初始显示50%地图,用户滚动时面板自然上移覆盖地图。方案避免了复杂JS拖拽计算,实现了流畅的半屏到全屏切换效果,同时适配微信小程序环境并保持代码结构清晰易扩展。
2025-10-29 11:39:46
427
原创 Uni-App 页面跳转监控实战:快速定位路由问题
通过简单的函数代理,我们就能轻松实现全局路由监控。无侵入,不需要改业务代码。实时可见,能直接看到参数和调用堆栈。扩展方便,可以加日志上报、埋点统计。
2025-09-27 16:57:44
518
原创 css3的 --自定义属性, 变量
root {.card {/* 继承自 .container */2.可以在CSS变量中使用计算,比如通过calc( ) 函数来计算尺寸:root {.element {3.css变量与媒体查询结合使用CSS变量非常适合和媒体查询一起使用,能够帮助你轻松地创建响应式设计,你可以在不同的屏幕尺寸下,修改变量的值以实现不同的布局主题:root {body {:root {/* 在小屏幕下修改字体大小 */
2025-09-10 11:51:16
873
原创 Pinia 两种写法全攻略:Options 写法 vs Setup 写法
/ 第一个参数是id 第二个个参数是配置对象count: 0,}),getters: {},actions: {},},})导入使用:// 在组件里。
2025-09-09 18:51:30
359
原创 Vue + ECharts 中 Prop 数据被修改导致图表合并的问题及解决方案
在项目中,我封装了一个Echarts柱状图组件(BarChart.vue),父组件传入seriesData和xData来渲染不同的柱子,但在实际使用中,遇到了问题多次切换不同数据, 图标柱子会出现"合并残留",旧数据还在图标显示不正确。
2025-08-28 18:54:47
792
原创 Vue2 Vue父子传参使用computed属性,子组件接收参数为undefined, 问题二 子组件自定义事件传递数据,父组件直接把props或绑定对象替换掉,导致无限递归
本文分析了Vue父子组件数据传递中的两个常见问题:1) 计算属性初始化顺序导致子组件接收undefined的问题,建议在created钩子或computed中初始化数据;2) 双向绑定导致的无限循环问题,应避免直接替换对象引用,推荐通过字段级更新或浅拷贝解决。文章提供了完整的解决方案和优化后的查询组件代码,实现了安全的数据传递和更新机制。
2025-08-22 21:17:56
531
原创 Vue 项目中父子传值使用Vuex异步数据不更新问题
摘要:Vue项目中父组件传递配置数组给子组件时,若配置项引用了Vuex异步数据,会因初始化引用问题导致子组件无法获取更新后的数据。解决方案:1)推荐使用计算属性动态生成配置数组,依赖Vuex数据变化自动更新;2)通过watch监听Vuex数据变化手动更新配置项。核心问题是data()中的引用在初始化时固定,不会随Vuex更新自动刷新,计算属性方案能优雅解决此问题。
2025-08-21 20:40:51
396
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅