Chrome Extension debugger 与 CDP 的能力边界 Chrome Extension 里有一个看起来很少用、但能力很强的权限:debugger。 它的作用可以理解为:让扩展通过 Chrome DevTools Protocol(CDP)连接到浏览器调试后端。扩展一旦拿到这个权限,就能对目标标签页发送一部分 DevTools 协议命令。 这类能力平时不应该随手用。它会触发明显的权限警告,调用时浏览器还会出现「某某扩展 started debuggin 2026-05-26 #Chrome Extension #CDP #debugger
Vue script setup 中组件静默消失的原因:一次命名冲突排查 Vue 3 的 <script setup> 很好用,但它也会把一些原本显式的东西变成编译器规则。平时这让代码更短,出问题时也会让排查路径变得很绕。 这篇文章记录一个真实排查:页面里一个组件没有渲染出来,控制台没有明显 error,最后发现原因是 <script setup> 里的普通变量名和组件名只差大小写,模板编译时把组件 tag 解析到了错误的变量上。 问题本身不复杂 2026-05-26 #Vue #script setup #compiler
Vue script setup 中 defineProps 的编译边界与错误排查 在 Vue 3 的 <script setup> 里,defineProps 看起来像一个函数,但它不是普通运行时函数。它更准确的身份是 编译器宏:源码里写出来,构建时被 @vue/compiler-sfc 识别并替换,最终运行在浏览器里的代码里不应该再出现它。 这个差别平时不太容易被注意到,因为常见写法都很自然: 1const props = defineProps<{ 2026-05-23 #Vue #script setup #compiler
我们需要什么样的 git 多人协作方式? 背景当我们查看开源项目的 git 历史记录时,会发现非常干净整洁,记录完全成一条直线: 但看我们项目的记录时,会发现几个问题: 掺杂太多「merge branch ……」之类的无用信息。 commit 太杂、太乱,例如一个需求为了解决测试的 bug,会有很多「fix」相关的提交,但其他人并不关心这个需求上线之前解决了几个 bug。 线很乱。 例如(隐藏了一些不方便公开的关键信息): 为了使 2022-08-26
关于 mac 的一些使用方法 Karabiner Element 键盘定制器(点击跳转至官网)mac 键盘和 windows 键位对不上,不习惯?这个软件可以改。 设置(在「设置 -> 键盘 -> 修饰键)中自带的键盘定制功能很弱: 这个软件提供更强大的定制功能。 对于我来说,mac 自带的键盘主要改了两个键: 将左边的 fn 改成 Command,与 Win 保持一致。 将右边的 Command 改成 Fn, 2022-08-11
利用 cron 实现 Node.js 的定时任务 一般的「定时任务」分两种,第一种是「间隔 xx 时间执行」,第二种是「在每x月/日/小时/分钟/秒」执行,又叫「周期任务」。前者使用 setInterval 比较容易做到,而后者就麻烦了。 我们可以使用 Node.js 的 cron 库来实现。 安装12345678# npmnpm i cron# yarnyarn add cron# pnpmpnpm i 2022-05-09
npm、yarn 和 pnpm 的lock 机制 问题:如何保证安装依赖的确定性?在开发中,经常出现这样的场景: 开发、测试的时候好好的,项目上线就报错了。 仔细检查,发现项目在开发和发布之间,刚好某一个依赖包发布了新版本,且这个新版本会导致问题。 这就导致安装的依赖版本相比开发 & 测试时有变化,因此无法提前预知。 在前端项目中,我们使用 package.json 管理项目的依赖,在该文件中,使用 semver 的机制记录了各个 2022-05-09