自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 快速连接Mumu模拟器调试uniapp项目

摘要:本文介绍如何使用Mumu模拟器调试Uniapp项目。首先安装Mumu模拟器并运行项目,需下载ADB工具包(官网获取)。通过终端执行adb connect连接模拟器7555端口,再在HBuilderX中选择已连接的模拟器进行调试。注意需开启模拟器的开发者模式和USB调试功能。最后建议优先考虑使用Android Studio进行调试。全文详细说明了从环境配置到连接调试的完整流程。

2025-09-15 15:06:13 344

原创 [electron]开发环境驱动识别失败

摘要:在硬件调试时遇到驱动文件在开发环境无法识别的问题。尽管已确认绝对路径正确、添加PATH变量、以管理员运行,但仅在打包后正常。最终发现Windows会额外查找dll路径,将驱动文件复制到electron/dist目录后解决。原因是驱动内部会执行相对路径依赖解析,而不仅依赖传入的绝对路径。解决方法是在开发环境将dll拷贝到electron可执行文件所在目录。

2025-08-25 11:56:33 228

原创 [Vue] ref及其底层原理

本文澄清了Vue3中ref的实现原理,指出其底层与reactive一样基于Proxy,而非Vue2的Object.defineProperty。ref的设计主要是为了解决reactive无法处理基础类型的问题,通过将值包装为.value对象实现响应式。文章通过示例代码展示了ref的简化实现原理,并总结ref本质上是reactive的语法糖,最终都基于统一的响应式系统架构。

2025-05-27 17:20:35 446

原创 [Vue]浅浅了解vue3响应式的基本原理

Vue3的响应式原理核心是通过Proxy代理对象,在get时收集依赖,set时触发更新。具体实现: reactive函数创建Proxy对象,拦截get/set操作 effect函数注册副作用回调,执行时会被暂存到activeEffect get操作时通过track收集依赖,将effect回调存入WeakMap结构 set操作时通过trigger查找依赖,执行对应effect回调 整个过程建立了"属性-依赖"的映射关系,实现数据变化自动更新 这种机制使得Vue3能够高效追踪数据变化并触发相

2025-05-27 16:41:26 605

原创 [React]实现一个类zustand公共状态库

本文探索了React状态管理的新方式,通过分析useSyncExternalStore Hook实现类似zustand的轻量级状态库。作者创建了一个createStore函数,利用订阅者模式监听状态变化,并使用useSyncExternalStore连接React渲染机制。该方案相比传统Context方案更简洁,展示了React 18状态下管理库的设计思路。文章以计数器为例演示了实现过程,包括类型定义、状态更新和组件订阅,为理解现代状态管理库原理提供了实用参考。

2025-05-27 11:52:52 700

原创 [浏览器]缓存策略机制详解

本文介绍了浏览器资源缓存的三种策略:强缓存、协商缓存和不缓存。强缓存通过Expires或Cache-Control实现,命中缓存时直接返回200状态码;协商缓存通过Last-Modified/If-Modified-Since或ETag/If-None-Match判断,命中时返回304状态码;不缓存则每次都请求最新资源。作者通过Koa示例代码演示了三种缓存策略的实现方式,并建议在性能优化时优先考虑强缓存,其次是协商缓存,最后才是不缓存策略。文章还提供了测试方法,帮助开发者通过浏览器控制台和开发者工具验证缓存

2025-05-26 17:23:42 718

原创 [javascript]取消异步请求

同时abortController不仅仅只是用来取消异步请求,它还可以用来取消addEventListener事件监听,再也不需要通过removeEventListener来取消监听了,省的每次还得保留回调函数引用来移除监听器,直接一步到位使用abort取消。使用AbortController取消异步请求,比如xmlHttpRequest/fetch发起的请求。取消定时任务或者其他异步逻辑等。

2025-05-09 15:27:00 254

原创 [css]纯css绘制三角形

原理是通过绘制border边框来实现,边框颜色默认是透明transparent 而三角形的方向向哪一边(top, right, bottom, left),就设置哪一边的边框颜色。可以看到是一个矩形圆角边框外加一个箭头,聪明的你一定想到了用上面的方式来绘制三角形,然后自己设置矩形的border-radius来实现。这样就获得了一个向上的等腰三角形,注意不要设置它的width或者height,想要调整三角形的大小请设置它的border-width。

2025-05-09 11:47:55 631

原创 [flutter]切换国内源(window)

变量值:https://storage.flutter-io.cn。如题,切换到国内源避免总是连不上google导致卡住的问题。变量值:https://pub.flutter-io.cn。变量名:FLUTTER_STORAGE_BASE_URL。变量名:PUB_HOSTED_URL。继续打开cmd验证是否添加正常,输入。打开系统信息 选择高级系统设置。这样就可以切换到国内源上来了。添加完之后点确定关闭这3个弹窗。

2025-04-24 15:30:44 899

原创 [next.js] svgr/webpack

按照上面的配置后发现无效,组件直接报错了。思考了许久才发现是因为我在开发环境使用了–turbo,所以一些webpack的loader加载器不支持。来开启turbopack加速文件构建,所以之前的一些webpack loader之类的无法正常工作。直接在next.config.js里这样配下就好了,现在Next.js会把import进来的svg处理成react 组件。的官网文档里turbo的介绍中发现就有@svgr/webpack的示例。所以当时的笨方法是把.svg内容复制下来放到封装的react组件里。

2024-06-12 17:32:09 1348 1

原创 [next.js]移动端调试vconsole

直接在这个layout的useEffect里加载vconsole (这里只会在开发环境里启用vconsole,基于webpack/turbopack的tree shake功能,在正式环境是不会把vconsole打包进来的) 然后使用import导入三方库并初始化。新建一个tsx文件,在这个tsx组件的useEffect里复制上面的代码(这里也是为了防止正式环境把vconsole打包进去),然后在入口的layouts里使用dynamic动态导入这个组件并挂载到页面上;先安装vconsole。

2024-06-11 15:55:47 1386 3

原创 [pixi.js] 入门简单案例 简易时钟

老实说pixi虽然之前拿来做个几个简单的游戏,但是是好久前的了,又忘了,现在算是重新入门。官网版本已经更新到v8去了,而react相关的pixi库虽然支持react18 但还是v6-v7的版本,既然已经看了v8的文档,那就没必要等pixi-react了,直接照着pixi文档撸吧。

2024-06-07 15:37:13 871 2

原创 [next.js]pwa缓存

配置Next.js (v14+ App Router模式) 使其支持PWA缓存,配置server worker和mainfest.json,让项目支持离线访问和可安装。以上配置 我让其在生产环境自动创建server worker和workbox等文件并在浏览器加载时初始化init sw文件,第二次访问时便可以创建sw缓存。配置next.config.js。

2024-06-05 14:03:00 916 1

原创 [nextjs]路由拦截守卫踩坑

问题肯定是出现在middleware中间件上,通过调试发现这里的判断依然是false 读取不到请求头里cookie里的token,但是明明请求头里有token呢;next想实现类似vue这种路由拦截器,其实使用next.js自带的中间件就行了。只能暂时先使用笨方法,在设置cookies后刷新页面,重新像服务器请求页面;匹配的路由,发现依然跳转到了登录窗口,尝试过几次都是这样(原谅我菜)或许是存在路由器缓存,如果手动刷新页面就不会拦截到了;刷新状态即可,不需要手动刷新页面,完美解决!这里一切都是正常工作的。

2024-05-29 17:05:42 1493

原创 [React] 手动实现CountTo 数字滚动效果

这个CountTo组件npmjs里当然有大把的依赖存在,不过今天我们不需要借助任何三方依赖,造个轮子来手动实现这个组件。通过研究其他count to插件我们可以发现,数字滚动效果主要依赖于。通过js帧来让数字动起来,数字变化则是依赖于内部的。所以我们需要给组件默认值,防止没有参数时会报错。来选择是否开始动画,同时组件销毁后清除。是必要的,其他都是可选参数。同时写几个工具函数便于后面使用。首先声明组件props类型。好了 我要开启五一假期了!一些相关依赖的监听及处理。最后附上完整代码 –

2024-04-30 18:07:52 1062 2

原创 Next.js 移动端适配

tips: tailwindcss/autoprefixer是我安装的依赖,没安装的可以删除这两项,否则会报错!是无法处理内联样式的,就是说你写在标签style里的属性是不会被转换的,要注意!由于next.js内置了postcss,所以我们不需要再安装postcss/postcss-loader。属性是适配设计稿的宽度 比如设计稿是375 这里就是375。在根目录的layout.tsx里配置Meta标签;属性是转换后的精度(小数点多少位)以上就是我适配移动端的方案;我这里借助的转换依赖是。

2024-04-29 17:42:20 2342

原创 next.js v14 从入门到跑路

用next.js也有几天了,也是这么一个边看边用这么一个状态,现在主要使用app router模式,更新下next.js v14 app router模式方面的姿势吧。区别于前面的pages router, app router虽然也是根据目录结构来划分路由,但是它不再依赖于使用getServerSideProps/getStaticProps在服务器时期去获取数据,在app router模式下只区分服务器组件和客户端组件,且一些在pages路由模式下的方法也无法在app路由下使用。

2024-04-28 18:06:44 1973 1

原创 [PM2]window环境部署服务报错

使用pm2部署服务测试,在window环境下一直提示。1:通过直接运行当前电脑里的npm脚步来开启服务。这是因为node无法操作cmd控制台;比如当前电脑npm所在的路径是。3: 通过pm2配置文件启动。

2024-04-08 16:29:54 850

原创 vite ssr服务端渲染

阅读这一章里有说过,vue是支持服务端渲染的。通过创建vue组件实例,并使用将在服务器渲染好template并返回字符串结构,通过替换占位字符将渲染好的字符串输出到html上,这样的一个过程就实现了服务端渲染。也提到了如何去渲染SSR并提供了相关那么今天我们就按照官方给的示例来完成vue ssr的改造使用Node Koa框架来做服务器,且使用vue全家桶(router,pinia)开发项目。

2024-03-13 11:08:24 1917 3

原创 vite性能优化之数据预取

本思路与常规方案不同,也不太推荐。有能力的建议直接一步到位用ssr改造项目,后面我也会出一个vite ssr博客出来。"数据预取"功能类似于SSR中的注水,SSR的注水,是在服务端获取数据并渲染好页面结构,客户端只需要渲染好页面就行了,省去了创建DOM的过程。在服务器端获取的数据需要通过’注水‘ 插入到页面上,到客户端读取服务器请求的数据,这个过程叫’脱水‘,通过‘脱水’,避免了再次向服务器请求的操作;

2024-03-11 11:26:10 1320

原创 【browser】浏览器跨域处理

好久没有更新博客了,前段时间在疯狂面试,最近工作了才有时间来写博客。准备来讲讲面试里常问到的跨域处理吧。说到跨域,我们可能会下意思的说出jsonp,服务端配置cors,node配置代理等,再多了,我可能想不起来了。本篇本来打算只记录postMessage这种方式的,但光说这个显得太单薄了,所以一并都总结一下吧。跨域是什么,为什么会跨域?要想知道为什么,你得先知道什么是同源策略。

2023-04-27 18:37:30 856

原创 css色彩主题适配思路

前端主题适配思路

2022-12-12 14:32:17 845 1

原创 复制内容到剪贴板

比如我这里创建一个方法将dom的内容传入到方法里,然后选择右键粘贴,即输入你想要复制的内容。记录一个非常好用的js api,自动将文字复制到剪贴板;触发了这个方法后会将当前选中的文字复制到剪贴板上;

2022-12-09 13:38:06 409

原创 [vite.js]按需加载自动注册组件

vite配置unplugin-vue-components插件 按需加载自动注册成组件

2022-11-29 11:30:44 1702

原创 vite.config.ts加载.env环境变量

本地开发代理proxy读取env环境变量,vite构建项目读取env,vite.config读取环境变量。

2022-11-29 10:21:01 4544

原创 React基础之Context

react基础之context,可以点进来了解一下。

2022-11-24 14:46:03 388

原创 Vue基础之组件通信provide、inject

类似react中context的功能,vue的provide就非常适合在祖孙这种多层级的状态下进行通信。

2022-11-24 11:26:09 804

原创 vite+vue-router4.x配置动态路由

vite+router.addRoute 后台管理配置动态路由

2022-11-21 15:37:42 1559 4

原创 [TypeScript]Vue/React子组件实例暴露方法

必知必会之Vue/React组件通信 其一;你可以不会,但你一定要了解怎么用。

2022-11-15 16:26:50 3661

原创 next.js极速入门

react ssr next极速入门

2022-11-03 16:18:25 2531

原创 css font字体瘦身

借助Node工具,提取需要的字体,减少引用字体大小。

2022-09-16 17:00:32 972

原创 nuxt3入门

nuxt3 RC 浅入

2022-06-22 11:23:34 5217

原创 【懒加载】监听视图是否到达可视区域

监听加载视图可视区域来实现懒加载

2022-06-15 14:28:08 549

原创 [mysql]记录一些常用sql语句

select * from table where key like '%value%'模糊查询查询key里所有包含value的数据集合;其中value% 代表了以value开头的数据而%value则代表了以value结尾的数据;select count(*) from table查询返回表里所有数据的数量可以通过as count重命名countselect count(*) as count from table...

2022-04-27 16:08:40 719

原创 nodejs实现文件上传功能

基于koa2 实现前端上传图片到服务器的功能;前端部分我们就用原生input file上传 通过change事件手动触发上传事件<input type="file" ref="file" accept="images/*" @change="onChange" multiple />js 这里以上传一张图片为例 function onChange() { const list = (file.value as HTMLInputElement).files as FileL

2022-04-25 14:44:35 5427

原创 [javascript]手写一个懒加载组件

参考一下vantui里的List组件,实现一个印象中的懒加载功能(之所以说是印象中呢主要是vant打不开鸭,全凭记忆中的功能来摸索了);不是我想重复造轮子,是我想自定义一些些功能。。。逻辑 主要是监听滚动条 计算设置好的滚动条到底部的高度来异步加载数据,期间异步加载尚未结束时不会重复执行加载操作,所以应该是用了节流。废话不多说,开始coding先声明一个组件 就叫他LazyLoad吧 <div class="lazy-load-ctx" ref="scrollRef">

2022-04-24 15:56:26 1175

原创 [TypeScript]监听事件event.target无法正确的获取属性

在使用ts开发项目的背景下,一般给dom添加监听事件时函数会拿到当前的事件对象;在我们指定了参数是Event后,我们去获取e.target里的属性时ts会提醒我们target里没有这个属性;类似于这样明明我们已经指定了事件的类型,为啥获取target里的值的时候会报错呢??经过我多方查阅方才得知,ts无法知道当前这个事件是什么元素的事件的类型,不同dom元素的事件里的target值都不相同;需要指定当前这个事件具体是什么元素里的HTMLElement类型比如我这个是div 那我指定他是HTML

2022-04-24 13:35:11 4719

原创 手动实现一个简易版的promise

理解基本的promise执行逻辑

2022-03-10 15:33:00 468

原创 【牛客网】前端面试手撕题讲解

最近在准备金三银四,刚好看到有一些常见的前端手写原理题目,遂记录下解题的思路(不是全部,好几道我也不会啊);地址: 20道前端面试手撕题下面正文开始FDE1 事件委托描述请补全JavaScript代码,要求如下:给"ul"标签添加点击事件当点击某"li"标签时,该标签内容拼接".“符号。如:某"li"标签被点击时,该标签内容为”…"注意:必须使用DOM0级标准事件(onclick)dom0级事件只有两个,一个是直接在dom上绑定onclick事件,另一个是获取dom元素并绑定o

2022-03-04 17:45:03 2049 1

原创 Vue3 双向绑定原理浅入

众所周知 vue2所使用的双向绑定原理是用了Object.defineProperty 来进行数据的拦截处理,而vue3使用了es6的 proxy代理拦截数据,那么 proxy是啥呢?菜鸟教程 ES6 Reflect 与 Proxyproxy小试牛刀先声明一个变量const obj = { name: 'dingzong'};创建一个proxy实例const _obj = new Proxy(obj, {})输出_obj构造函数proxy第二项是一个对象,对象里有内置十三种方法来捕

2022-02-14 11:15:43 2150

空空如也

空空如也

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

TA关注的人

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