跳到主要内容

欢迎来到我的小宇宙

这里是我的个人博客,主要记录关于代码、工具折腾、学习方法和一些思考。 下面是我写过的所有文章,欢迎随便逛逛。

Vite 代理接口偶发超时的排查与解决

在开发时我发现这样的问题,我前端调用一个接口会造成接口返回异常直到这个接口超时。但是偶尔又是正常的。一开始因为是接口问题,查询速度慢,返回有问题。后面我去接口工具中调用接口发现很正常。但是唯独使用本地 vite 代理的接口就会出现这种情况。 我的 vite 代理是这样的 proxy: { "^/csm-(auth|base|olcs|call|ors|stats|voice)": { target: "http://xxx.xxx.xxx.xx:xxx", changeOrigin: true, rewrite: path => path } }, 后面我发现可能是 vite中的代理出现了问题。一番查询之下,得出结论可能是 Vite 代理复用了某个后端或中间网络状态不好的连接。因为这部分我没有去深究是什么情况。后面我将这个 vite 代理单独把这个 csm-voice 这个规则重新写了一个。 proxy: { "/csm-voice": { target: "http://xxxx.xxx.xxx.xxx:xxx", changeOrigin: true, rewrite: path => path, headers: { Connection: "close" }, agent: new http.Agent({ keepAlive: false }), timeout: 120000, proxyTimeout: 120000 }, "^/csm-(auth|base|olcs|call|ors|stats)": { target: "http://xxxx.xxx.xxx.xxx:xxxx", changeOrigin: true, rewrite: path => path } }, 主要是新增了这样的规则,后面接口请求就正常返回了,没有说出现很慢的情况。
Vite Vue3

微信小程序 BLE 扫描变慢与 allowDuplicatesKey 排查

今天在做微信小程序获取蓝牙权限 ble 扫描对应的无线设备时,发现一个这样的情况,我初次启动小程序扫描蓝牙是很快能扫描到,也能很快建立连接,但是我一旦断开蓝牙,重新打开,我就发现这个扫描无线设备非常缓慢,一直处于扫描中的状态。我就不是很明白,为什么会这样。于是我上网查了一下“UniApp 开发微信小程序蓝牙通信”的问题。我就找到了一篇参考文章 参考文章:wx66ece9f42611c - UniApp 开发微信小程序蓝牙通信:从流程到避坑 看到了一个关键数据“allowDuplicatesKey”,我在代码中是设置的 false,我就在想是不是这个问题,但是我问了 GPT,它说是跟这个参数无影响, allowDuplicatesKey: false 只是表示本次扫描中同一个设备不重复回调。 它不会导致“第一次连接过的设备以后扫描不到”。 但是我想了想,还是死马当活马医,我改一下试试看。 // 持续扫描:开启后不会自动停止,需显式 stopDiscovery() export async function startDiscovery(onDeviceFound = null, options = {}) { uni.onBluetoothDeviceFound(res => { emitScannedDevices(res.devices, onDeviceFound, options, sid); }); await startDiscovery(onDeviceFound, { allowDuplicatesKey: true, // 允许重复上报同一设备(保持信号更新) scanWithServiceFilter: false, interval: 0, restartDelayMs: 300, // 停旧扫描后等 300ms 再启 cacheRefreshDelayMs: 1200 // 启动后 1.2s 再读一次缓存 }) 我发现改成了 true 后居然解决了这个问题,我就很好奇,claude 给出的回答是这样的
微信小程序 BLE 蓝牙

Nuxt.js 上手学习笔记(二):项目部署、Nginx 反向代理与 SQLite 排查

Nuxt.js (day2) 的学习 #前一天刚把 Nuxt 的页面、接口和 SQLite 跑起来,今天就顺势开始折腾部署。因为这个项目本身已经具备前后端和数据库的最小闭环,所以很适合拿来练习一次完整的上线流程。 这篇主要记录我在部署 Nuxt 项目时最终采用的方案、实际踩过的坑,以及排查 Nginx、Cloudflare 和 better-sqlite3 过程中得到的一些结论。整体折腾了小半天,最后算是把从容器启动到域名访问这一整条链路搞通了。感谢 GPT,感谢我的同事哈哈! 最终我决定统一采用这套方案: Docker 里只运行 Nuxt 宿主机 Nginx 负责对外入口 宿主机 Nginx 反向代理到 127.0.0.1:3000 一、我最终采用的部署方式 #最后确定使用的是这套部署流程:
Nuxt Docker Nginx

Nuxt.js 上手学习笔记(一):项目结构、自动路由与 API 搭建

Nuxt.js (day1) 的学习 #最近看到一个新技术就折腾一下,前面看到 qiankun,昨天刷 L 站看到了 Nuxt.js,这不就开始上手边看文档边写项目了。 目前就根据我自己起的项目来做个小总结。 1. 项目结构 #目前跟普通的 Vue 的区别就是多了一个 server,专门用于放与后端 db、api 相关的内容,其他的没太多变化。
Nuxt Vue3 SSR

微前端 qiankun 的学习 - 1

其实在最初找工作的时候就跟一些同为前端的朋友交流过,那个时候了解到的一个概念是叫“大前端”,当时其实是有点懵的,刚毕业感觉自己什么都不会,这个概念也是第一次听到,后面了解到的就是前端不仅仅只是做web开发。还需要涉及更多领域,比如说微信小程序,APP,桌面端(Electron),甚至是 Node.js,SSR 这种。后面上班后视野逐渐更加开阔,了解到了一点点 docker 的皮毛,熟悉了 nginx等这种工程化的内容。对于这个大前端也有了一定的概念。 随着工作时间的增加,偶然看到了微前端的这个概念。这个虽然在之前也听过,可是我并没有去了解,但是今天我在空闲的时间中,依靠如今的 AI 帮我做了一个深入的了解。我让 AI 帮我搭建了一个基础的项目框架,然后我看了一下它写的代码,大概就了解了这个概念。微前端无非就是一个大容器中我可以随时放任何内容,想放哪个就放哪个,不要哪个就拿出来即可。且这些内容可以由多个不同的人来开发。彼此之间不会受到任何干扰。这大概就是我所了解到的。虽然可能看起来比较浅显。但是我想应该就是这样了。 下面我输出一些基础的代码来看看 #首先是主应用,也就是所谓的放子应用的容器,其实就是一个独立的 Vue3 项目 App.vue中的核心部分是这样的 #<template> <div> <nav style="padding:10px;background:#f0f0f0"> <a href="/sub-vue">Vue3 Sub</a> | <a href="/sub-react">React Sub</a> | <a href="/sub-vanilla">Vanilla Sub</a> </nav> <div id="subapp-container"></div> </div> </template> 因为我初识这个微前端,搭建的内容可能简单粗浅。这个地方可以看到我有三个子应用,我选择了 vue, react, 和原生的 js. 这个地方的重要点是 a 链接中的 href 和下面 div 中的 id,这些内容需要跟在主应用中注册微应用中的内容对上,记得需要在 main.js 中需要引入前端和对应用进行注册。
微前端 Qiankun