程序员茄子
全部
编程
代码
资讯
案例
综合
联系我们
前端 相关技术文章
php
mysql
shell
go
vue
css
api接口对接
支付接口对接
Pinia Colada 实战:query key、enabled 与缓存失效的坑
编程
Pinia Colada 实战:query key、enabled 与缓存失效的坑
2026-11-12 21:31:30
Pinia Colada 在 Vue 3 里做数据获取层的实操记录:query key 必须是函数、inject 在 query 函数里重拉时失效、store 里消费 query 会让它永生、enabled 暂停共享查询、分页用 placeholderData 保留旧数据、清缓存要先 cancel 再 remove、setQueryData 会强置 status=success。
Vue
Pinia
前端
缓存
TypeScript
Vue 3.6 rc.11:v-memo 在 Vapor 模板里被静默忽略,只在 dev 给一句警告
代码
Vue 3.6 rc.11:v-memo 在 Vapor 模板里被静默忽略,只在 dev 给一句警告
2026-11-10 21:07:38
Vue 3.6.0-rc.11 为 Vapor 里被忽略的行为加了 dev 警告:v-memo、globalProperties、元素上的 @vue:* 钩子都只是警告而非报错,生产环境仍然静默失效。本文整理这几条与更严格的编译期检查(无 script setup、const/v-for 上的 v-model),给出把 Vue warn 升级成失败的测试配置。
Vue
Vapor
前端
迁移
抛错的 computed 卡住了共享 notify buffer:Vue 3.6 alpha.1–rc.9 的 watcher 停摆
编程
抛错的 computed 卡住了共享 notify buffer:Vue 3.6 alpha.1–rc.9 的 watcher 停摆
2026-11-05 21:31:43
Vue 3.6 从 alpha.1 到 rc.9 存在一个响应式回归:computed getter 抛错会打断共享 notify buffer 的 flush 循环,游标没归零,导致另一个完全无关的 watcher 停止更新、直到下一次任意写入才被「捎带」执行。本文拆解 notify buffer 与 flush 的真实控制流,给出复现代码、rc.10 的 try/catch 修复,以及六步排查清单。
Vue3
响应式
前端
源码
Vue 3.6 的 Vapor 不再默认把事件委托到 document:祖先 stopPropagation 不再吃掉子元素的处理函数
代码
Vue 3.6 的 Vapor 不再默认把事件委托到 document:祖先 stopPropagation 不再吃掉子元素的处理函数
2026-11-04 21:05:00
Vue 3.6 RC 里 Vapor 的三处行为差异:事件委托改成 opt-in(要 .delegate 才回到旧行为)、slots.default() 会真的渲染不能当探测、自定义指令变成函数加 getter。附 Vapor 不支持 API 清单与 createVaporApp / interop 的取舍。
Vue
前端
Vapor
迁移
Intl.NumberFormat 不解析:19 位金额串、min2 分组与 -0 的三种显示
编程
Intl.NumberFormat 不解析:19 位金额串、min2 分组与 -0 的三种显示
2026-11-02 00:04:30
Intl.NumberFormat 只格式化不解析,三处容易踩的地方:JSON 金额是字符串时先 parseFloat 会把 19 位数字末位抹成 0(v3 起字符串按十进制精确解析,BigInt 分单位可加 E-6 直传);useGrouping 的 'min2' 让 1000 不分组、10000 才分组,字符串 'true'/'false' 会被静默替换成默认值;signDisplay 五个取值对负零的显示从 "-0" 到 "+0" 各不相同。另附 formatToParts 反解本地化数字的写法与 round-trip 校验。
Intl.NumberFormat
Intl
i18n
国际化
JavaScript
前端
Vue Router 5.4.0:hash 不再解码,重定向不再继承 params/query/hash
编程
Vue Router 5.4.0:hash 不再解码,重定向不再继承 params/query/hash
2026-11-01 21:08:00
Vue Router 5.4.0 的几处默认行为变化会直接打断现有代码:hash 段不再解码、只做保护性编码;重定向不再隐式继承 params/query/hash;带默认值的 query 参数 push 时可省略,required 与 default 不能并存;滚动恢复默认行为有变。附逐条自查清单。
Vue
前端
路由
升级
Vue 3.6 Vapor 在 Nuxt 4.6 只能 interop:开启方式、限制清单与实测数字
编程
Vue 3.6 Vapor 在 Nuxt 4.6 只能 interop:开启方式、限制清单与实测数字
2026-11-01 21:03:15
Vue 3.6 的 Vapor Mode 是可选编译模式,跳过虚拟 DOM;在 Nuxt 4.6 里只能以 interop 形式用,应用根仍留在 VDOM。整理开启配置、Vue 版本要求、Nuxt 文档列出的六条限制($el、Island slot、keyed onPrehydrate、defineNuxtComponent 等)与构建性能数字。
Vue
Nuxt
前端
编译优化
容器里 TZ=UTC,SSR 日期少一天:Intl.DateTimeFormat 的默认值与边界
编程
容器里 TZ=UTC,SSR 日期少一天:Intl.DateTimeFormat 的默认值与边界
2026-11-01 00:03:59
Intl.DateTimeFormat 的默认 timeZone 取运行时区,不是 UTC:容器 TZ=UTC 时 SSR 与浏览器会差一天。文中给出 dateStyle 与组件选项互斥的报错原文、hourCycle h24 输出 24:00、Etc/GMT+8 符号相反、small-icu 静默退化为 en-US 等复现代码与判据,并附修复顺序。
Intl.DateTimeFormat
JavaScript
时区
前端
i18n
ASH
Vite 8.3.5 的 21 条修复里有 8 条落在 bundled-dev:dev 也走打包之后,dev-only 语义得重写一遍
代码
Vite 8.3.5 的 21 条修复里有 8 条落在 bundled-dev:dev 也走打包之后,dev-only 语义得重写一遍
2026-10-31 21:06:16
Vite 8.3.5 的 21 条修复里 8 条属于 bundled-dev:dev 阶段也打包之后,HMR 传播、错误栈 source map、server.origin、import.meta.env 自定义变量这些本来"只在 dev 生效"的语义都得重新实现。逐条列修复与 issue 编号,并给出开不开 bundled-dev、行号对不上时怎么查的判断。
Vite
前端
构建
调试
版本升级
Vite+ 1.0 用一个 `vp` 收掉 Vite、Vitest、lint 和 Node 版本:升级只改一处,代价是也锁成一套
代码
Vite+ 1.0 用一个 `vp` 收掉 Vite、Vitest、lint 和 Node 版本:升级只改一处,代价是也锁成一套
2026-10-31 21:05:25
Vite+ 1.0 用一个 vp CLI 和一个 vite-plus 依赖替代 vite、vitest、eslint、prettier、tsup、turbo 的组合,顺带管 Node 版本与 git hooks。文中列出 vp check/test/dev/build/env/toolchain/migrate 的分工、vp toolchain 实际 pin 的版本,以及"升级只改一处"与"全家桶锁定"之间该怎么选。
Vite
前端
工具链
Vitest
工程化
provide 了还报 injection "x" not found:inject 的六个失效点按概率排
编程
provide 了还报 injection "x" not found:inject 的六个失效点按概率排
2026-10-30 00:04:55
inject 拿不到值、拿到不更新、类型是 unknown,多数不是响应式坏了,而是提供方式或调用位置不对。按概率排一遍排查顺序:无祖先 provider 与默认值写法、reactive(ref) 与 .value 断链、inject 从 @vue/runtime-core 导入、setup 外异步调用、Symbol key 与 InjectionKey、测试里 global.provide,并给出 provide/inject 与 Pinia 的取舍标准。
inject
provide
Vue3
依赖注入
InjectionKey
hasInjectionContext
前端
Vue 3.6 RC 把异步组件的 200ms 延迟加回来了:loading 闪一下到底该谁管
代码
Vue 3.6 RC 把异步组件的 200ms 延迟加回来了:loading 闪一下到底该谁管
2026-10-26 21:05:48
v3.6.0-rc.13 恢复了异步组件默认 200ms 延迟:loader 在窗口内 resolve 就不渲染 loadingComponent,避免快网络下 skeleton 闪一下。这篇讲 delay 与 timeout、Suspense fallback 的分工,给出限速复现步骤,以及升级后与手写防抖叠加成 400ms 的迁移坑。
Vue
前端
异步组件
Intl.DateTimeFormat 的 dateStyle 与单组件互斥:容器里差 8 小时与 hourCycle 的 0/1 起点
案例
Intl.DateTimeFormat 的 dateStyle 与单组件互斥:容器里差 8 小时与 hourCycle 的 0/1 起点
2026-10-25 00:06:07
Intl.DateTimeFormat 有两类不会提示的失败:dateStyle/timeStyle 与 hour、year 等单组件同时写会直接抛 TypeError;timeZone 默认取运行时时区,容器里通常 UTC,服务器与浏览器输出就差 8 小时。文中给出互斥规则与 resolvedOptions 不展开的原因、IANA 与偏移两种时区写法、h11/h12/h23/h24 的起点差异与 hour12 的覆盖顺序,并附一段可跑的断言脚本。
Intl
Intl.DateTimeFormat
i18n
国际化
前端
JavaScript
时区
Intl.NumberFormat 位数与舍入:只设 minFrac 会把 maxFrac 定成 3,分组符也不一定是空格
编程
Intl.NumberFormat 位数与舍入:只设 minFrac 会把 maxFrac 定成 3,分组符也不一定是空格
2026-10-25 00:04:53
Intl.NumberFormat 的位数与舍入选项有大量会静默生效的默认值:只写 minimumFractionDigits 会把 maximumFractionDigits 定成 3,roundingIncrement 不给 maxFrac 就被压成 0,旧引擎还会直接忽略 roundingMode。文中列出默认值表、九种舍入模式对照、0.05/0.1 舍入写法、fr-FR 的 U+202F 分组符,以及一套 resolvedOptions 自检与排查顺序。</description> <||DSML|| parameter name="keywords" string="true">Intl.NumberFormat|IntlNumberFormat|roundingMode|roundingIncrement|trailingZeroDisplay|roundingPriority|i18n|前端国际化|金额格式化
Intl
Intl.NumberFormat
i18n
国际化
前端
JavaScript
ICU
Vapor 的事件委托改成要手写 .delegate:3.6 RC 里 stopPropagation 的行为变了
代码
Vapor 的事件委托改成要手写 .delegate:3.6 RC 里 stopPropagation 的行为变了
2026-10-24 21:09:47
Vapor 模式以前会把受支持的静态事件自动委托到 document,祖先一调 stopPropagation 子组件的 handler 就不跑了。3.6 RC 改成默认直挂元素、需要委托时显式写 .delegate,同时删掉了 compilerOptions.eventDelegation。本文给迁移步骤和四类需要复核的代码。
Vue
前端
事件
Vitest 5 升级笔记:未 await 的断言开始失败,mock 调用每个测试前被清空
代码
Vitest 5 升级笔记:未 await 的断言开始失败,mock 调用每个测试前被清空
2026-10-20 21:09:38
Vitest 5 提速最高 50%(跨项目共享转换结果、磁盘缓存、减少进程间传输),但两处行为变更会让旧用例开始失败:未 await 的异步断言不再假通过、每个测试前清空 mock 调用。附 vitest doctor 诊断、--repeats 排查 flaky 与迁移清单。
前端
测试
Vitest
工具链
补丁版本也会改行为:Vue 3.5.44 中四处影响运行时的修复
编程
补丁版本也会改行为:Vue 3.5.44 中四处影响运行时的修复
2026-10-20 21:07:22
Vue 3.5.44 是补丁版本,但 25+ 修复里有四条改运行时行为:watcher 在别的 effect 内不再收集依赖(关闭 #5009)、once watcher 抛错也停止、SSR 开始传播 async setup 的错误、v-html 正确输出 0 和 false。附最小复现代码与升级检查清单。
Vue
前端
响应式
SSR
写给别人复用的 composable:VueUse 官方指南里的 9 条约定与 5 处取舍
编程
写给别人复用的 composable:VueUse 官方指南里的 9 条约定与 5 处取舍
2026-10-17 00:04:14
面向「要写给别人复用的 composable」的库作者:整理 VueUse 官方指南的通用约定,并逐条说明理由——包大对象用 shallowRef、全局变量走 configurableWindow、内部 watch 透传选项、controls 选项让简单用法保持简单、新 Web API 输出 isSupported、异步函数返回 PromiseLike 以配合 Suspense、无渲染组件包装规范,附适用边界与代码。
Composables
Vue3
组合式函数
VueUse
前端
TypeScript
ICU MessageFormat 落地笔记:六个 CLDR 复数类别、`=N` 优先级与 MF2 技术预览(ICU 75.1)
编程
ICU MessageFormat 落地笔记:六个 CLDR 复数类别、`=N` 优先级与 MF2 技术预览(ICU 75.1)
2026-10-16 00:03:52
讲清 ICU MessageFormat 的工程细节:六个 CLDR 复数类别、other 必填与 =N 精确匹配的优先级、select/plural 嵌套顺序、花括号转义、skeleton 为何优于 string pattern,以及 MF2 在 ICU 75.1 的技术预览状态和 FormatJS/messageformat 两个实现库。
i18n
国际化
ICU
MessageFormat
CLDR
前端
Vue3 Composables 的四种设计模式:状态封装、异步请求、副作用与组合
编程
Vue3 Composables 的四种设计模式:状态封装、异步请求、副作用与组合
2026-10-15 21:31:41
同一个 onMounted+ref+watch 片段在第三个页面重复出现,就该抽 composable 了。本文把 Vue 3 组合式函数收敛成四种模式:状态封装(readonly 包装返回)、异步请求(MaybeRefOrGetter 自动重请求)、副作用管理(清理用 onScopeDispose 而非 onUnmounted)、组合复用,并给出粒度权衡、三个易踩坑与目录分层/测试方法。
Vue3
Composables
组合式函数
前端
TypeScript
Inertia.js 3.9:后台标签页轮询可暂停,退出登录后 Back 键不再翻出缓存里的受保护页面
代码
Inertia.js 3.9:后台标签页轮询可暂停,退出登录后 Back 键不再翻出缓存里的受保护页面
2026-10-15 21:03:21
Inertia.js v3.9 给 usePoll/router.poll 加了 background 选项,可让隐藏标签页的轮询暂停或继续,替代已弃用的 keepAlive;同时 clearHistory 会一并清空 prefetch 缓存,修掉退出登录后按 Back 翻出缓存受保护页面的问题,并说明这是本地展示边界而非鉴权绕过。
Inertia.js
Vue
前端
Laravel
Vue Router v5.4.0:预构建 matcher、滚动恢复 API 落地,实验特性下 query 一律归一为数组
编程
Vue Router v5.4.0:预构建 matcher、滚动恢复 API 落地,实验特性下 query 一律归一为数组
2026-10-14 21:31:49
Vue Router v5.4.0(2026-10-07)发布:createRouter 支持传入预构建 matcher,新增 useScrollRestoration 与 onRouteRendered 两个官方 API,并带来一批 hash 参数实验特性(definePage 提取 hash、必填/默认 hash 参数、不再解码 hash)。实验模式下 query 值被统一归一化为数组,属破坏性变更。附完整特性/修复清单与升级建议。
Vue
Router
路由
TypeScript
前端
localStorage 没有 5MB 保证:Web Storage 的隔离规则、配额失败与选型
编程
localStorage 没有 5MB 保证:Web Storage 的隔离规则、配额失败与选型
2026-10-08 00:04:05
从前端常见的存储误用切入,讲清 Web Storage 的隔离规则(协议也参与)、配额不是固定 5MB 及各种失败表现,并给出 localStorage / sessionStorage / Cookie 的选型对照与能力探测、跨标签页同步代码。
WebStorage
localStorage
sessionStorage
浏览器存储
前端
浏览器端
Vue 3.6 Vapor 默认不再做事件委托:监听器直接绑元素,要委托得写 .delegate
编程
Vue 3.6 Vapor 默认不再做事件委托:监听器直接绑元素,要委托得写 .delegate
2026-10-04 21:02:38
Vue 3.6 从 rc.2 起,Vapor 组件默认把 DOM 监听器直接绑到元素,不再做 document 级事件委托;需要委托得写 Vapor 专用的 .delegate 修饰符。本文讲清这一改动的取舍、对既有代码的影响,以及 Vapor 的 Opt-in 写法、Options API 不支持、createVaporApp 与 vaporInteropPlugin 的边界。
Vue
前端
Vapor
事件
成本
3.6
大家都在搜索什么?
devops
易支付
一个官网+多少钱
统一接受回调
统一回调
python
sub
node
宝塔日志
mysql
shell
ElasticSearch
css
vue
api接口对接
2025
支付接口对接
go
php
php回调
上一页
1
2
3
4
5
6
7
下一页
共 7 页
到第
页
确定