自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 uniapp 实现一个底部悬浮面板

本文介绍了微信小程序地图界面与浮动面板交互设计方案。通过三层结构布局:底层地图、中层搜索栏和悬浮按钮、顶层可滚动浮层实现半屏地图展示。核心采用scroll-view包裹透明占位区与工具面板的结构,利用CSS控制初始显示50%地图,用户滚动时面板自然上移覆盖地图。方案避免了复杂JS拖拽计算,实现了流畅的半屏到全屏切换效果,同时适配微信小程序环境并保持代码结构清晰易扩展。

2025-10-29 11:39:46 353

原创 Uni-App 页面跳转监控实战:快速定位路由问题

通过简单的函数代理,我们就能轻松实现全局路由监控。无侵入,不需要改业务代码。实时可见,能直接看到参数和调用堆栈。扩展方便,可以加日志上报、埋点统计。

2025-09-27 16:57:44 459

原创 css3的 --自定义属性, 变量

root {.card {/* 继承自 .container */2.可以在CSS变量中使用计算,比如通过calc( ) 函数来计算尺寸:root {.element {3.css变量与媒体查询结合使用CSS变量非常适合和媒体查询一起使用,能够帮助你轻松地创建响应式设计,你可以在不同的屏幕尺寸下,修改变量的值以实现不同的布局主题:root {body {:root {/* 在小屏幕下修改字体大小 */

2025-09-10 11:51:16 797

原创 Pinia 两种写法全攻略:Options 写法 vs Setup 写法

/ 第一个参数是id 第二个个参数是配置对象count: 0,}),getters: {},actions: {},},})导入使用:// 在组件里。

2025-09-09 18:51:30 309

原创 Vue + ECharts 中 Prop 数据被修改导致图表合并的问题及解决方案

在项目中,我封装了一个Echarts柱状图组件(BarChart.vue),父组件传入seriesData和xData来渲染不同的柱子,但在实际使用中,遇到了问题多次切换不同数据, 图标柱子会出现"合并残留",旧数据还在图标显示不正确。

2025-08-28 18:54:47 758

原创 Vue2 Vue父子传参使用computed属性,子组件接收参数为undefined, 问题二 子组件自定义事件传递数据,父组件直接把props或绑定对象替换掉,导致无限递归

本文分析了Vue父子组件数据传递中的两个常见问题:1) 计算属性初始化顺序导致子组件接收undefined的问题,建议在created钩子或computed中初始化数据;2) 双向绑定导致的无限循环问题,应避免直接替换对象引用,推荐通过字段级更新或浅拷贝解决。文章提供了完整的解决方案和优化后的查询组件代码,实现了安全的数据传递和更新机制。

2025-08-22 21:17:56 485

原创 Vue 项目中父子传值使用Vuex异步数据不更新问题

摘要:Vue项目中父组件传递配置数组给子组件时,若配置项引用了Vuex异步数据,会因初始化引用问题导致子组件无法获取更新后的数据。解决方案:1)推荐使用计算属性动态生成配置数组,依赖Vuex数据变化自动更新;2)通过watch监听Vuex数据变化手动更新配置项。核心问题是data()中的引用在初始化时固定,不会随Vuex更新自动刷新,计算属性方案能优雅解决此问题。

2025-08-21 20:40:51 381

原创 解决 vue2 不能使用可选链?. 和??

Vue2项目中使用可选链运算符(?. )和空值合并运算符(?? )需要配置Babel插件。安装@babel/plugin-proposal-optional-chaining和@babel/plugin-proposal-nullish-coalescing-operator依赖后,修改babel.config.js文件,在plugins数组中添加这两个插件。配置完成后需重启项目才能生效,这样就能用obj?.user?.name和name?? '默认用户名'简化代码,避免冗长的对象属性判断。生产环境还可配置

2025-08-13 10:47:10 388

原创 vue2+vue3面试题 高频 2025 (15-29) 题

这是一个抽象模式,不依赖浏览器环境,适用于服务器端渲染(SSR)或测试环境不操作浏览器URL,而是用内存记录路由状态主要用于Node.js 服务器端渲染,或者没有浏览器环境的场景。

2025-07-30 02:52:54 771

原创 前端css 的固定布局,流式布局,弹性布局,自适应布局,响应式布局

容器的宽高是固定的,单位一般是px,不会随着屏幕大小变化。

2025-07-29 21:40:36 1127

原创 js面试题 高频(12-22题)

1.代码服用与抽象: 高阶函数可以将重复的逻辑抽象出来,形成通用函数,提高代码的复用性,柯李华可以将复杂的函数调用转化为一系列简单的步骤,便于部分应用和服用2.函数组合: 高阶函数和柯里化是构建函数式编程风格的关键,它们使的函数的组合变得更容易,从而构建更复杂的功能3.延迟执行与配置化: 柯里化可以将函数执行延迟到所有参数都传入后进行,同时允许在传入部分参数时进行配置,生成定制化的新函数。

2025-07-29 01:46:31 1173

原创 vue2+vue3面试题 高频 2025 (1-14) 题

Vue自定义指令其实是对原生DOM操作的封装指令钩子函数会接受到当前绑定的DOM元素el,通过操作它实现各种效果本质上,Vue在编译模版时,会解析指令,调用对应的钩子函数完成操作。

2025-07-27 10:01:57 945

原创 js面试题 高频(1-11题)

JavaScript核心概念摘要 变量声明: var函数作用域,let/const块作用域 let解决for循环闭包问题 const不可重新赋值但对象内容可变 类型系统: 7种原始类型+引用类型 typeof null返回"object"是历史遗留问题 值类型按值传递,引用类型按引用传递 对象拷贝: 浅拷贝复制第一层,深拷贝递归复制所有层级 JSON方法深拷贝有局限性(忽略函数等) 数组方法: 增删:push/pop/shift/unshift/splice 遍历:map/filter/

2025-07-23 23:19:13 1084

原创 uni-push 统一推送

是指服务器主动向客户端发送消息的技术,无需客户端持续轮询服务器,既可获得即时数据客户端应用必须实时在线;手机端耗电严重;服务器负载高且浪费资源手机的通知栏,小程序的订阅消息都是一种push,由手机操作系统或微信在底层提供了push通道,屏蔽了轮询的各种弊端,你的应用可以被关闭,只有手机有网,操作系统提供的push通道是实时在线的,提醒: web浏览器的webnotification其实是一个本地通知栏功能,浏览器厂商没有提供push通道.

2025-07-22 00:53:17 1601

原创 web前端渡一大师课 02 浏览器渲染原理

reflow 的本质就是重新计算Layout树.当进行了会影响布局树的操作后,需要重新计算布局树,会引发Layout为了避免连续的多次操作导致不拘束反复计算,浏览器会合并这些操作,当JS代码全部完成后再进行统一计算,所以,改动属性造成的reflow是异步完成的.也同样因为如此,当JS获取布局属性时,就可能造成无法获取到最新的布局信息浏览器在反复权衡下,最终决定获取属性立即reflowrepaint 的本质就是重新根据分层信息计算了绘制指令.

2025-07-19 20:05:19 956

原创 web前端渡一大师课 04 购物车实战

【代码】web前端渡一大师课 04 购物车实战。

2025-07-19 12:46:26 285

原创 web前端渡一大师课 03 歌词滚动效果

01:20.90]凭这两眼与百臂或千手不能防。[01:28.68]贪欢一刻偏教那女儿情长埋葬。[01:41.69]凭这两眼与百臂或千手不能防。[01:49.54]贪欢一刻偏教那女儿情长埋葬。[03:05.27]凭这两眼与百臂或千手不能防。[03:13.06]贪欢一刻偏教那女儿情长埋葬。[03:26.21]凭这两眼与百臂或千手不能防。[03:33.92]贪欢一刻偏教那女儿情长埋葬。[03:47.04]凭这两眼与百臂或千手不能防。[04:07.90]凭这两眼与百臂或千手不能防。

2025-07-18 01:31:40 880

原创 web前端渡一大师课 CSS属性计算过程

<h1>这是一个h1标题</h1>

2025-07-17 21:20:02 1060

原创 web前端渡一大师课 01 事件循环

浏览器采用多进程多线程模型保障稳定性,其中渲染主线程负责执行HTML/CSS/JS代码。由于需要处理解析、渲染、交互等多种任务,主线程采用事件循环机制调度任务:通过消息队列实现异步处理,避免阻塞。当遇到计时器、网络请求等异步操作时,主线程将任务交由其他线程处理,完成后回调加入队列等待执行。JS的单线程特性决定了同步代码会阻碍渲染,如死循环会导致页面冻结。任务优先级方面,微队列(如Promise)优先级最高,其次是交互队列和延时队列。定时器因系统偏差和事件循环机制无法实现精确计时。理解事件循环机制是掌握JS异

2025-07-15 16:05:16 1617

原创 css 面试题

主轴方向由flex-direction控制(默认row,水平从左到右)交叉轴始终垂直于主轴,用于控制垂直对齐当你使用某些CSS属性(如transform,filtter,opacity等)时,浏览器会将这些元素提升到一个单独的合成层,这意味着这些元素的渲染不会影响其他部分的渲染,从而提高性能GPU加速: 合成层使用GPU来加速渲染,提高动画流畅性和页面交互速度合成与重排: 合成层可以减少重排和重绘;

2025-07-08 15:29:16 1112

原创 深入理解CSS中的BFC 与IFC , 布局的两大基础概念

本文介绍了CSS布局中的两个重要概念:BFC(块级格式化上下文)和IFC(行内格式化上下文)。BFC是独立布局环境,影响块级元素垂直排列,可解决浮动导致的高度塌陷和外边距合并问题,通过设置overflow、float、position等属性触发。IFC控制行内元素水平排列,处理文本对齐和换行行为,由display:inline或inline-block等触发。文章通过实例展示了BFC清除浮动、防止外边距合并,以及IFC实现行内元素对齐和图文混排的应用场景,比较了两者的区别,帮助开发者更好地控制页面布局。

2025-07-03 15:58:43 831

原创 CSS外边距合并(塌陷)全解析:原理、场景与解决方案

CSS外边距合并的三大场景及解决方案:1.相邻元素、父子元素和空元素的外边距合并现象;2.5种主流解决方案:BFC隔离(推荐flow-root)、物理隔离(padding/border)、Flex/Grid布局、行内块和伪元素法;3.方案选择指南:现代项目首选flow-root,兼容需求用overflow:hidden,响应式布局推荐Flex/Grid。文章详细说明了每种方案的优缺点和适用场景,帮助开发者精准解决布局问题。

2025-07-02 20:05:47 487

原创 uniapp 中使用路由导航守卫,进行登录鉴权

Uniapp登录路由守卫实现方案摘要 本文介绍了两种Uniapp登录状态路由守卫实现方案。方案一使用第三方插件(hh-router-guard或uni-simple-route),方案二通过uni.addInterceptor实现。重点讲解了方案二的实现细节:1)配置白名单机制;2)权限校验逻辑;3)拦截器核心方法;4)初始化调用方式。该方案支持白名单动态更新,可检查token有效性,未登录用户自动跳转登录页并携带来源路径。在App.vue的onLaunch中调用initRouteGuard()即可启动全局

2025-07-01 15:43:11 646

原创 前端开发工作流: ESLInt+ Prettier+VS Code终极指南

前端团队协作中,代码质量工具链(ESLint+Prettier+VSCode插件)能有效解决三大问题:代码一致性、潜在错误检测和协作效率。ESLint侧重代码质量检查和规范执行,Prettier专注代码风格统一,两者配合使用时需用eslint-plugin-prettier解决规则冲突。VSCode插件则提供实时反馈和自动格式化功能。此外,ESLint默认规则可扩展为Airbnb、Standard等开源规范,而settings.json文件控制着编辑器的格式化行为。实际开发中,建议同时配置项目级.prett

2025-06-24 19:17:41 1026

原创 Node.js 在前端开发中的作用与 npm 的核心理解

Node.js和npm已成为前端开发的核心工具。Node.js提供开发服务器(如Vite)、构建工具(Webpack)支持,并运行自动化任务。npm作为包管理器,负责依赖安装、脚本执行和模块发布。通过package.json管理依赖,package-lock.json锁定版本。优化建议包括使用镜像源加速、nvm管理Node版本。两者共同构建了现代前端工程化体系,显著提升开发效率。

2025-06-20 20:49:59 775

原创 failed to load config from D:\Aweb\project\doorandwindow-background-newmaster\vite.config.tserror w

【摘要】在使用Vite时遇到visualizer调用错误,原因是导入方式不正确。错误提示表明visualizer未被识别为函数。解决方案是将导入方式从import visualizer from 'rollup-plugin-visualizer'改为命名导入import { visualizer } from 'rollup-plugin-visualizer'。这确保正确引用插件函数,解决配置问题。

2025-06-15 22:16:58 266

原创 Vue3 项目启动报错 Error [ERR_REQUIRE_ESM]: require() of ES Module D:\Aweb\project\doorandwindow-background

项目加载vite.config.ts时出现ESM与CommonJS不兼容问题,原因是package-manager-detector作为ESM模块被CommonJS代码require()调用。解决方案是在package.json中添加"type":"module"字段,并确保脚本配置正确。这样明确指定项目使用ESM模块系统,可避免模块加载冲突。

2025-06-15 22:12:04 1519 1

原创 Web 前端性能优化全景指南与实战策略

*fn: 要被防抖的函数delay: 延迟时间(默认300毫秒)*///返回一个新函数,这个函数才是真正绑定事件用的函数//清除上一个定时器//延迟后执行//执行目标函数fn, this保持原来的调用上下文,args把刚才传入的新函数的参数传进去},delay);//用法console.log('🔍 正在搜索:', keyword);// 每次输入触发,都传入当前输入框的内容});

2025-06-09 14:22:11 1129

原创 CSS 定位:原理 + 场景 + 示例全解析

CSS中的position属性用于设置元素的定位方式,它决定了元素在页面中的"定位行为"

2025-06-06 16:30:23 1224

原创 Web前端为什么要打包?Webpack 和 Vite 如何助力现代开发?

功能强大,插件和Loader丰富,几乎支持所有资源类型转换适合大型项目,构建过程复杂但灵活生产环境自动开启代码压缩,拆分,缓存策略通过webpack.config.js配置规则打包是现代前端必不可少的流程,帮助我们解决模块化,性能和兼容性问题Webpack更强大灵活,配置复杂,适合大型项目Vite轻量便捷,极大提高开发效率,适合新项目快速上手了解打包原理,能帮你写出更高性能,更易维护的代码结合项目需求,合理配置压缩,拆分和缓存策略,确保用户体验。

2025-06-03 17:18:00 1505

原创 Git Commit 提交规范指南 - Web前端开发者必备

部分说明示例类型提交的类别(等)featfix作用域影响的范围(可选)(login)描述简明扼要的说明实现用户登录功能正文详细说明(可选)用列出关键改动脚注关联Issue或重大变更(可选)这样的提交信息:清晰可读,团队协作更搞笑便于检索, git log -- grep="feat(login)"可快速找到登录相关功能可自动化,方便生成CHANGELOG.md。

2025-05-29 16:41:37 1418

原创 理解 Vue 2 的响应式原理:数据劫持与依赖收集的背后

数据被修改,setter调用dep.notify( ),触发所有依赖watcher执行update( )watcher执行视图更新,组件自动刷新。

2025-05-28 11:31:29 1104

原创 JavaScript对象继承

/ 子类通过原型链继承父类为了解决原型包含引用值导致的继承问题,一种叫作"盗用构造函数"的技术在开发社区流行起来(这种技术有时也称作"对象伪装"或"经典继承"). 基本思路很简单: 在子类构造函数中调用父类的构造函数 , 因为毕竟函数就是特定上下文中执行代码的简单对象,所以可以使用apply( )和call( )方法以新创建的对象为上下文执行构造函数,来看下面的例子://父类//子类//继承SuperType。

2025-05-23 14:41:23 1220

原创 UniApp开发各种项目的区别详解(H5,App(5+app), ,Web2app,小程序)等

Uniapp 是一个使用Vue.js开发所有前端应用的框架,支持编译到App,H5,微信小程序,支付宝小程序等多个平台,虽然号称一套代码多端运行,但不同平台在实现机制,API支持,能力边界等方面仍有较大差异,本文将结合H5,App(5+App),Web2App,小程序等场景,深入分析UniApp开发各种项目时的区别于注意事项。

2025-05-16 15:03:39 2396

原创 创建对象

虽然Object构造函数或对象字面量可以方便地创建对象,但这些方式也有明显不足: 创建具有同样接口的多个对象需要重复编写很多代码。

2025-05-14 17:07:43 1064

原创 js对象原型,原型链

无论何时,只要创建一个函数,就会按照特定的规则为这个函数创建一个prototype属性(指向原型对象),默认情况下,所有原型对象自动获得一个名为construcor的属性,指回与之关联的构造函数,对前面的例子而言,Person.prototype.constructor指向Person 然后,因构造函数而异,可能会给原型对象添加其他属性和方法。

2025-05-14 17:07:01 867

原创 深入理解 JavaScript 对象与属性控制

Object.defineProperties() 通过多个描述符一次性定义多个属性, 接受两个参数: 要为之添加或修改属性的对象和另一个描述符对象,其属性要与添加或修改的属性意义对应,比如:year_:{},editon:{value:1},year:{},})//2017//false//undefined 数据属性没有get.get//false//false。

2025-05-09 14:45:46 1000

原创 Vue 虚拟DOM和DIff算法

Vue通过虚拟DOM和Diff算法,极大地优化了性能,当数据发生变化时,Vue会生成新的虚拟DOM,通过DIff算法与旧的虚拟DOM树对比,最终只更新有变化的部分,从而减少了直接操作真实DOM的次数,提升了页面的响应速度,结合合理的性能优化策略,可以让Vue在大规模应用中也能保持高效的性能。

2025-05-04 17:00:01 695

原创 从 HTTP/0.9 到 HTTP/3:Web 前端开发者必须了解的协议进化史

浏览器处于安全考虑,限制了网页向不同源发送请求简单说就是:一个网页只能请求自己域名下的资源,想去请求别人的,就要遵守规则比如你的网站是: https: //www.a.com你想用ajax请求:这就算跨域了!

2025-04-28 10:24:14 871

原创 【前端基础】Cookie、sessionStorage 和 localStorage 详解及应用场景分析

Cookie是一种由服务器发送到浏览器的小型文本数据,也可以通过js创建,用于在客户端存储信息,并在后续请求中自动携带这些信息sessionStorage是H5提供的一种本地存储方式,用于在当前会话(标签页)期间存储数据,浏览器关闭或刷新后数据失效localStorage同样是H5引入的本地存储机制,数据存储后会长期保存在本地浏览器中,除非被手动清除。

2025-04-28 09:49:55 1164

空空如也

空空如也

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

TA关注的人

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