博文

接口使用情况查询工具

图片
 这周还算清闲,做了一个【接口使用情况】的查询工具,主要是应对后端和测试总时不时来问“这个接口前端用到了吗”“那个接口在哪里调用的啊”……忙到飞起的时候真的会顾不过来😒 页面很简单,列表页主要负责基础查询,可以了解指定接口是否有被前端调用,以及是在哪些系统里被调用的;详情弹窗则负责更进一步的查询,可以详细看到使用该接口的菜单,方便用户前往核查。 后端是用 node 搭建的,对接代码仓库的 API,实时读取前端各项目的源码文件,进而借助正则匹配和 AST 解析来提取接口信息,并查找使用接口的文件,根据文件路径匹配到菜单信息,返回给前端。 实现这个工具主要的难点在于源代码的精准解析,前置的工作很多,几个系统有关接口调用的部分我几乎都重构了一遍,就是为了保证代码格式尽可能的统一;还有的系统因为各种历史原因,存在大量的未使用但也未移除的代码,导致我不得不又写了几个脚本文件,检测未被引用的接口、类型和常量,删除干净以后整个人都神清气爽了。即便如此,解析源代码也需要额外兼容很多的情况,比如微信小程序和 web 项目工程结构的差异、动态路由的拼接、不同后端服务的分辨,以及花了好大力气才排查出来并发读取源文件时可能有丢包的情况(我一直当是自己解析文件的代码哪里写错了😓😓) 总之,这个工具已经运转起来了,满足了同事们简单场景下的查询需求,稍微复杂点的场景肯定还是远远不够用的啦!静待同事的随时召唤🙇

浅试 MCP

图片
  Copilot 非复吴下阿蒙。效果可以说非常惊艳了,大概只用了三个小时的时间,就把流程跑通了。但是 AI 时代,0-1 是最简单的,1 之后的工作可就难讲咯! 附一张概念图,实操一遍后,理解更深刻了:

Creating a Nice Kitty with AI

图片
A cute cartoon cat co-created with GitHub Copilot (Claude 3.7 Sonnet), where I played the role of the human co-pilot😏 Feel free to check out the live demo at https://nice-kitty.vercel.app/ and explore the code at https://github.com/huangyuting-lab/nice-kitty to see how it's implemented. Plus, turns out AI is still only good at creative tasks with high error tolerance. Guess I won't be out of a job just yet!

一些抱怨

写一个巨长巨臭又要求各种智能回显的表单,真的写到崩溃…… React 的状态更新为什么要异步执行呢?就算异步,提供一个 async 版的 setState 不行吗?就算不提供,哪怕给个传回调函数的机会呢?非要借助 useEffect,逻辑越是混乱的地方,越容易误触 useEffect,这个 api 到底有什么好啊?只想精准控制,就要设置一个和业务毫无关系的 flag state,不脏吗? 每到这个时候就会怀念起 Vue 了😓响应式状态同步更新,顺序执行的逻辑代码耦合紧密,遇到实在复杂的场景还可以用 nextTick 打个补丁。React 写到走投无路的时候就只能重构了,看着那个六百多行怎么拆都拆不开的表单真是想死的心都有了…… 留下个场景记录吧!也许哪天变厉害了,回头再来看这个场景,就知道该怎么改了吧! 1. 调用接口获取一组文件的地址; 2. useState 更新 fileParserList,isParsingList,parseResultList 的状态,将值设为 Array.from({ length : fileUrlList.length }, () => initialValue ); 3. 并发执行文件解析,Promise.all(fileUrlList.map((url, index) => parseFile(index, url))); 4. 在 parseFile 函数中实现对应文件的 fileParser、isParsing、parseResult 的更新。

ProFormList 包裹的表单项使用了 transform 属性导致的无法正常更新的 bug

图片
被坑了两次,每次费半天力气 debug 到最后发现都是这个问题导致的,甚至开发历程都是一模一样,我真的累…… 时间线: 1. 封装了一个上传 csv 的组件 / 上传图片的组件; 2. 考虑借助 transform 属性实现统一的值转化,格式大概如下: 3. 数月后,产品经理提出扩展需求,字段数组化; 4. 直接使用 <ProFormList /> 包裹; 5. 发现字段修改后无法触发正常的更新; 6. 开启漫长的 debug 历程…… 7. 最后发现 namepath 取值为 ProFormList 的 name,而非实际字段的 name,卒。 解决方案:

如何解决 Visual Studio Code Extensions 卡在 Installing 而无法完成安装的问题?

图片
 1. 点击这里找到 Extension 文件所在目录。 2. 手动删除这个 Extension 目录。 3. 重启 VS Code。 4. 在插件市场搜索这个 Extension。 5. 下载 VSIX 文件。 6. 安装 VSIX 文件。 7. 视情况勾选 Auto Update。

一行代码实现通用化柯里函数

图片
  啊!我悟到了……